Skip to content

简易 RAG 流程

RAG(Retrieval-Augmented Generation):检索相关片段 → 拼进 Prompt → 大模型生成回答。Qdrant 负责其中 检索 一环。

数据准备

  1. 文档切 chunk(如每段 300~800 字,可重叠)。
  2. 每段 Embedding,维度与 Collection 一致。
  3. Upsertid 可用序号或 UUID;payload 建议包含:
    • text:chunk 原文
    • doc_idchunk_index:溯源
    • source:文件名或 URL

检索

  1. 用户问题 → 同一模型 Embedding。
  2. search(limit=5~15),可加 filter(用户权限、知识库版本)。
  3. 将 top 结果的 text 拼接为上下文(注意总 token 限制)。

生成(应用层)

将「上下文 + 问题」发给 LLM API;Python/Java 均可,与 Qdrant 解耦

Python 最小串联示意

text
chunk 文本列表
  → SentenceTransformer.encode
  → qdrant_client.upsert(..., payload={"text": chunk})
用户问句
  → encode
  → client.search
  → 取 payload["text"] 拼 prompt → 调用 Chat API

Java 服务常见分工

  • Java:业务 API、鉴权、调用 LLM。
  • 写入/重索引:可用 Java gRPC 写 Qdrant,或离线 Python 批处理灌库。
  • 检索:Java searchAsync 取 chunk,再调模型服务。

质量要点

  • chunk 策略 影响召回;过小丢上下文,过大噪声多。
  • 同源多段 可同时命中,需 去重或合并
  • 幻觉 敏感场景:只允许模型使用检索到的文字(需在 Prompt 中约束)。

小结

Qdrant 在 RAG 中的角色:语义索引;Embedding 模型与 chunk 设计 与 Qdrant 同等重要