我终于明白了为什么重排序器如此强大,一旦我掌握了双编码器和交叉编码器之间的关键区别。 我进一步找到了一种使用统一架构结合它们的力量的方法。 让我来解释一下: RAG 是 80% 的检索和 20% 的生成。因此,如果 RAG 不工作,很可能是检索问题。 这正是为什么正确获取你的检索架构如此重要——这始于理解这两种(实际上是三种)编码方法。 (在阅读时请参考下面的视觉图) 1️⃣ 双编码器 双编码器(向量搜索的支柱)分别处理查询和文档。 - 文档嵌入是预先计算的 - 查询在搜索时进行嵌入 这使得双编码器非常适合初始检索: - 极其快速 - 可扩展 - 缺少重要的上下文信息 2️⃣ 交叉编码器 交叉编码器采用完全不同的重排序方法。 它们将查询和每个文档作为一个单元进行处理。 - 将查询与文档结合([CLS] 查询 [SEP] 文档 [SEP]) - 一起通过模型运行以实现完全的交叉注意 这使得交叉编码器非常适合第二阶段: - 捕捉语义关系以提高准确性 - 但对于大型集合来说速度较慢且资源消耗大 现在,如果我们能结合两者的优点呢! 3️⃣ ColBERT ColBERT 将交叉编码器的力量与双编码器的可扩展性结合在一起。 - 分别编码查询和文档 - 创建交互矩阵,计算所有查询-文档令牌对之间的相似性分数 - 对每个查询令牌在文档令牌中取最大分数 - 将最大分数相加以获得最终匹配分数 _____ 这就是总结! 如果你觉得这很有启发性,请与你的网络分享。 找到我 → @akshay_pachaar ✔️ 获取更多关于 LLM、AI 代理和机器学习的见解和教程!
46.68K