Appearance
简易 RAG 流程
RAG(Retrieval-Augmented Generation):检索相关片段 → 拼进 Prompt → 大模型生成回答。Qdrant 负责其中 检索 一环。
数据准备
- 文档切 chunk(如每段 300~800 字,可重叠)。
- 每段 Embedding,维度与 Collection 一致。
- Upsert:
id可用序号或 UUID;payload 建议包含:text:chunk 原文doc_id、chunk_index:溯源source:文件名或 URL
检索
- 用户问题 → 同一模型 Embedding。
search(limit=5~15),可加 filter(用户权限、知识库版本)。- 将 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 APIJava 服务常见分工
- Java:业务 API、鉴权、调用 LLM。
- 写入/重索引:可用 Java gRPC 写 Qdrant,或离线 Python 批处理灌库。
- 检索:Java searchAsync 取 chunk,再调模型服务。
质量要点
- chunk 策略 影响召回;过小丢上下文,过大噪声多。
- 同源多段 可同时命中,需 去重或合并。
- 对 幻觉 敏感场景:只允许模型使用检索到的文字(需在 Prompt 中约束)。
小结
Qdrant 在 RAG 中的角色:语义索引;Embedding 模型与 chunk 设计 与 Qdrant 同等重要。