RAG 将外部知识与生成能力结合,确保答案有来源、可追溯且可更新。典型流程:清洗与分块 → 嵌入与入库 → 检索与重排 → 组装上下文 → 生成与标注引用 → 评估与迭代。
// Node.js(示意)
const embedRes = await client.embeddings.create({ model: "EMBED_MODEL", input: chunks });
await upsert(embedRes.data.map((v,i)=>({ id: `${doc.id}-${i}`, vector: v.embedding, text: chunks[i], meta })));
// Rerank(示意)
const hits = await search(qvec, { k: 20, filter });
const reranked = await rerank(hits, query);
const topK = dedup(reranked).slice(0, 6);
// 生成(示意)
const context = topK.map(h => `【片段】${h.text}\n来源:${h.meta.source}`).join("\n\n");
const res = await client.chat.completions.create({
model: "MODEL_NAME",
messages: [
{ role: "system", content: "仅依据提供片段回答,并在末尾列出引用。" },
{ role: "user", content: `资料:\n\n${context}\n\n问题:${query}` }
]
});