DMCShop
Senaryo 2

RAG tabanlı ürün asistanı

Sorduğunuz soruya vector retrieval ile en yakın 5 ürünü çekip chat modeline bağlam olarak verir. Yanıt streaming olarak token-token gelir. Her çağrı vector.query_log'a yazılır.

Retrieval: ollama / bge-m3 Chat: ollama / qwen2.5:3b-instruct-q4_K_M
Arkada calisan T-SQL 21-rag-assistant.sql

Retrieval katmani. Sorunun embedding'i uretilir, VECTOR_SEARCH top-K urunu getirir, sonuc metni modele baglam olarak verilir.

DECLARE @question NVARCHAR(MAX) = N'1500 TL altı ofis için ergonomik bir mouse önerir misin?';
DECLARE @top_k INT = 5;

-- ----------------------------------------------------------------------------
-- 1) Soruyu embed et
-- ----------------------------------------------------------------------------
DECLARE @vec_json NVARCHAR(MAX);
EXEC ops.sp_embed_text @text = @question, @vec_json = @vec_json OUTPUT;

DECLARE @q VECTOR(1024) = CAST(@vec_json AS VECTOR(1024));   -- ollama bge-m3 1024

-- ----------------------------------------------------------------------------
-- 2) Top-K ürün — DiskANN approximate kNN
-- ----------------------------------------------------------------------------
DECLARE @context NVARCHAR(MAX);
DECLARE @used_ids NVARCHAR(MAX);

;WITH hits AS (
    SELECT * FROM VECTOR_SEARCH(
        TABLE      = vector.product_embedding,
        COLUMN     = embedding_bge_1024,
        SIMILAR_TO = @q,
        METRIC     = 'cosine',
        TOP_N      = @top_k)
),
joined AS (
    SELECT
        h.product_id,
        p.name,
        cat.name AS cat_name,
        p.price,
        LEFT(p.description_tr, 140) AS preview,
        h.distance
    FROM hits h
    JOIN shop.product          p   ON p.product_id   = h.product_id
    JOIN shop.product_category cat ON cat.category_id = p.category_id
)
SELECT
    @context  = STRING_AGG(
        CAST('[#' + CAST(product_id AS NVARCHAR(10)) + '] ' + name + N' — ' + cat_name + N' — '

Tam betik: sql/21-rag-assistant.sql

Örnek
Sorularınız burada birikir

Her soru, verilen cevap, kullanılan ürün numaraları, sağlayıcı adı ve süre vector.query_log tablosuna yazılır. Yukarıdaki örneklerden birine tıklayın, sorduğunuz her şey bu bölümde listelenecek. Başkalarının soruları burada görünmez.

Beklenmedik bir hata oluştu. Yeniden yükle x

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.