RAG是什么? LlamaIndex 把它分为两步决策:"找到证据"和"书写答案"。 检索增强生成(RAG)的两部决策:先找到有用的证据,再决定怎么把证据变… · @Zen_with_AI · TwKit
@Zen_with_AI
RAG是什么? LlamaIndex 把它分为两步决策:"找到证据"和"书写答案"。 检索增强生成(RAG)的两部决策:先找到有用的证据,再决定怎么把证据变成答案。小路对照 LlamaIndex 的三份官方文档(索引指南、节点后处理器、响应模式)读了一遍,讲的是各模块怎么工作。 LlamaIndex 把索引、检索、后处理和响应合成拆成独立的阶段,每个阶段可以换自己的策略。 先给您一条主线: 索引->检索->后处理->合成 (组织证据,挑出候选,筛选重排,最后决定怎么写成答案) 1. 索引。文档里,节点(Node)对应从文档里切出来的一块文本,索引负责组织这些节点。向量索引给每个节点存一个嵌入,查询时取最相似的 top-k 个节点。关键词表索引从每个节点提取关键词,查询时从问题里提取关键词,再去匹配。树索引从根往叶子逐层遍历,默认每层只选一个子节点。属性图索引先构建带标签的知识图谱,构建方式可以让 LLM 自由抽取,也可以用严格的模式。 这些差别说明,选哪种索引,既影响准备阶段,也影响查询阶段做什么。以文档为例,摘要索引(Summary Index)在没有其他查询参数的时候,会把列表里所有节点都交给响应合成模块。索引建得更丰富,也不会把所有成本都搬出请求路径。 2. 检索与后处理。检索器为一次查询挑出候选节点。后处理器拿到这批候选,做过滤、重排之类的转换。文档里最常见的位置,是查询引擎里检索之后、合成之前,也可以单独拿来处理检索结果。 文档里的例子能说明问题:SimilarityPostprocessor 会按相似度阈值(例如 0.75)过滤节点,CohereRerank 用 top_n 保留重排后的前几个,TimeWeightedPostprocessor 用 top_k 保留前几个。所以检索数量调大,不等于合成器就能看到更多证据。候选在后处理这一步,可能已经被筛掉了。 3. 合成。合成器决定怎么花模型的上下文窗口和调用次数。 refine 模式逐块处理:第一块配合 text_qa_template 提问,之后每一轮把上一轮的答案、下一块和原问题一起交给 refine_template。文档明确写了,每个节点或检索块对应一次单独的模型调用。文档说它适合要更详细答案的场景。 compact 是默认模式。它先把检索到的块拼接打包,塞进尽可能多的文本(要考虑 text_qa_template 和 refine_template 里较大的提示词),所以调用次数比 refine 少。如果文本太长装不进一个提示词,就切成需要的段数,每一段当作一个块交给 refine。 这里有一个常见的成本误区:compact 减少调用,但并不保证每个请求只调用一次。证据超出提示词空间,仍然会有多次调用。 另外,`simple_summarize` 是另一种模式,它把所有块截断到一个提示词里,文档提醒可能因为截断丢失细节。这是 `simple_summarize` 的行为,不要拿来解释 compact。compact 的做法是切分,不是截断。 以上三点来自官方文档。接下来是小路自己的判断。 4. 评估。检索质量和答案质量要分开测。相似度能找出相关的文字,但证明不了这段文字支持了要回答的论断。一个写得很流畅的回答,可能掩盖了证据集是空的或者不相关。附上来源节点,也不自动等于忠实的引用。 落到实践上,我的建议是在每个边界处看一眼: 1. 检索出了多少候选。文档里的 `no_text` 模式只跑检索、不调用模型,之后可以通过 response.source_nodes 检查。 2. 后处理之后,留下了哪些证据。 3. 提示词里实际放了什么。 4. 模型调用了几次。 5. 最终答案挂了哪些来源。 简单总结一下就是:LlamaIndex 最大的好处,是流水线可以一段一段地替换,索引、后处理器、响应模式都有各自的选项。但抽象不会替您做评估,每个边界上实际通过了什么,仍然需要您自己去看。 官方文档: https://developers.llamaindex.ai/python/framework/module_guides/indexing/index_guide/index.md https://developers.llamaindex.ai/python/framework/module_guides/querying/node_postprocessors/index.md https://developers.llamaindex.ai/python/framework/module_guides/deploying/query_engine/response_modes/index.md
曝光 569 · 评论 2 · 点赞 7 · 书签 2
查看原帖