Anthropic提出Contextual Retrieval,大幅降低RAG检索失败率
Anthropic提出ContextualRetrieval方法,通过上下文嵌入和上下文BM25将检索失败率降低49%,结合重排序可降低67%。该方法在嵌入前为每个分块添加解释性上下文,显著提升RAG系统检索准确性,尤其适用于知识库问答场景。
在知识库问答这类场景中,RAG 已成为当下最主流的 LLM 应用范式。如何为大模型提供既全面又精准的上下文信息,一直是业界持续探索的方向。传统 RAG 解决方案存在一个固有缺陷:在编码信息时,上下文信息容易丢失,导致系统难以从知识库中有效检索出相关内容。因此,核心挑战转变为:如何更好地保留并利用上下文信息?
Anthropic 研究团队最近提出了一种名为“Contextual Retrieval(上下文检索)”的创新方法,在该领域取得了显著突破。他们发布了一篇技术文章[1]详细阐述了技术细节,通过上下文嵌入(Contextual Embeddings)和上下文 BM25(Contextual BM25),可将检索失败率降低 49%;再结合重排序(reranking),失败率可进一步降至 67%。下面我们来深入解析这一方法。
{{WHOLE_DOCUMENT}}
Here is the chunk we want to situate within the whole document
{{CHUNK_CONTENT}}
Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk. Answer only with the succinct context and nothing else.
```
具体实现步骤如下:
1. **生成上下文**:首先让 Claude 为每个分块生成上下文。例如,某个分块内容是“公司的收入比上一季度增长了3%”,Claude 生成的上下文可能是:“这个分块来自ACME公司在2023年第二季度的SEC文件;上一季度的收入为3.14亿美元。公司的收入比上一季度增长了3%。”
2. **添加上下文到分块**:将生成的上下文直接附加到原始分块中,使每个分块拥有充分的背景信息。
3. **创建嵌入**:接着使用嵌入模型(如 Voyage 或 Gemini)将上下文化分块转换为向量嵌入。这些向量是高维空间中的点,代表文本的语义含义。
4. **创建 BM25 索引**:同时为上下文化分块创建 BM25 索引,这是一种基于词频和逆文档频率的检索算法,能有效衡量文本与查询之间的相关性。
5. **存储和检索**:嵌入向量和 BM25 索引分别存储在向量数据库和 BM25 索引库中。用户输入查询后,系统可以同时利用两者进行检索,找到最相关的上下文化分块。
6. **重排序**:检索到相关分块后,使用重排序技术进行过滤和排序,确保最相关的分块才被传递给生成模型。这一步能大幅提升检索的准确性和相关性。
在实现上下文检索时,研究团队特别强调了几点注意事项:
* **分块策略**:文档的分割方式——包括分块大小、边界设定、重叠程度——都会影响检索性能。
* **嵌入模型**:选择合适的模型至关重要,Gemini[5] 和 Voyage[6] 在测试中表现更为突出。
* **自定义上下文提示**:通用提示在大多数场景下已足够,但特定场景可能需要定制提示才能获得更优结果。
* **分块的数量**:增加提供给模型的分块数量,确实能提高找到相关信息的概率。但过多信息也可能使模型“分心”,因此需要设置上限。研究团队测试了提供 5、10、20 个分块,发现 20 个在三个选项中表现最佳,不过具体应用场景仍需自行尝试。
* **持续评估**:将上下文化的分块传递给响应生成器,同时区分上下文与分块本身,有助于优化响应生成。
来源:https://www.53ai.com/news/RAG/2024101431269.html
相关热点
继续查看同栏目近期热点。
延伸阅读
补充最近整理过的热点入口。
