RAG 检索的未受启发的教训:余弦不是基础

企业文档智能 [Vol.1 #7ter] - 检索砖上的六个位置与主流 RAG 的余弦优先反射相矛盾The post The Untaught Lessons of RAG Retrieval: Cosine Is Not the Foundation 首先出现在 Towards Data Science 上。

来源:走向数据科学

是企业文档智能的姊妹篇,该系列的理念在 Amplify the Expert 中阐述。它放大了四块架构的第 3 块(检索),并展示了大多数教程跳过的课程。

主流故事有检索作为嵌入问题,通过余弦返回top-k,可选地重新排名。我们几乎不同意它的每个部分。检索是对结构化表进行过滤,而不是搜索自由文本。嵌入是可选的后备方案,而不是基础。锚点和上下文是两种粒度,而不是一种。每一个立场都是我们可以捍卫的,其后果是可以衡量的。

📓可运行的配套笔记本位于 GitHub 上:doc-intel/notebooks-vol1。

本文所推翻的幼稚基线

简单的管道对文档进行分块,嵌入每个块,嵌入问题,按余弦排名。这个单一信号是不透明的,它会丢弃文档的结构。我们将文档保留为 line_df+toc_df 并并行运行三个检索信号(行上的关键字、TOC 推理、嵌入余弦),然后让 LLM 仲裁器在最后对所有三组匹配项进行排名一次。

下面是这块积木的六个未教授的课程。

第 1 课 – 检索是过滤,而不是搜索

解析完成后,检索是一个类似 SQL 的过滤问题 overline_dfandtoc_df,与 chunk-embed-cosine-top-k 框架相反。转变很简单:问题有列,文档有列,检索是连接。

→第 7A 条:检索是过滤,而不是搜索布局心智模型。

第 2 课 – 锚点和上下文,分开

您锚定在提到“优质”(精确)的单行上,但将整个周围部分传递给生成(足够的上下文);将它们合并在一起会破坏精度和覆盖范围。Top-k 迫使你做出选择:小块会丢失上下文,大块会丢失精度。通过将它们分开,我们可以得到两者。

→第 7A 条:检索是过滤,而不是搜索在锚点和上下文之间划清界限。