构建生产级 RAG(检索增强生成)AI 系统是一个艰难的任务。
检索(Retrieval)
F) 数据切分(Chunking) - 如何对用于外部上下文的数据进行切分?
小块 vs. 大块。 滑动窗口(sliding window)或滚动窗口(tumbling window)进行切分。 在搜索时是检索父级或关联块,还是仅使用原始检索数据?
C) 选择嵌入模型(Choosing the embedding model)
用于将数据嵌入和查询外部上下文的模型选择。 考虑上下文化嵌入(Contextual embeddings)。
D) 向量数据库(Vector Database)
选择哪种数据库。 部署位置。 需要存储哪些元数据以便与嵌入向量关联。 索引策略。
E) 向量搜索(Vector Search)
相似度度量的选择。 查询路径的选择:先基于元数据还是先使用 ANN(近似最近邻)搜索? 采用混合搜索(Hybrid Search)。
G) 规则与启发式(Heuristics) - 在检索过程中应用的业务规则。
时间权重(Time importance)。 重新排序(Reranking)。 处理重复上下文(多样性排序)。 来源检索(Source retrieval)。 条件性文档预处理。
生成(Generation)
A) LLM 选择(Choosing the right Large Language Model)
✅ 随着 LLM 的发展,这个问题变得越来越简单。当前,开源和专有 LLM 的性能正在趋同,主要的选择在于:
使用专有模型(Proprietary model)。 自行托管(Self-hosting)。
B) Prompt 设计(Prompt Engineering)
即使有了外部上下文,仍然需要精心设计 Prompt:
使系统生成符合预期的输出。 预防越狱(Jailbreak)场景。
别忘了一个容易被忽略的部分
H) 观察、评估、监控和安全性(Observing, Evaluating, Monitoring and Securing)
确保生产环境下的应用运行稳定、安全,并能持续优化!
