我終於明白了為什麼重排序器如此強大,一旦我掌握了雙編碼器和交叉編碼器之間的關鍵區別。 我進一步找到了一種使用統一架構結合它們的力量的方法。 讓我來解釋一下: RAG 是 80% 的檢索和 20% 的生成。因此,如果 RAG 不工作,很可能是檢索問題。 這正是為什麼正確獲取你的檢索架構如此重要——這始於理解這兩種(實際上是三種)編碼方法。 (在閱讀時請參考下面的視覺圖) 1️⃣ 雙編碼器 雙編碼器(向量搜索的支柱)分別處理查詢和文檔。 - 文檔嵌入是預先計算的 - 查詢在搜索時進行嵌入 這使得雙編碼器非常適合初始檢索: - 極其快速 - 可擴展 - 缺少重要的上下文信息 2️⃣ 交叉編碼器 交叉編碼器採用完全不同的重排序方法。 它們將查詢和每個文檔作為一個單元進行處理。 - 將查詢與文檔結合([CLS] 查詢 [SEP] 文檔 [SEP]) - 一起通過模型運行以實現完全的交叉注意 這使得交叉編碼器非常適合第二階段: - 捕捉語義關係以提高準確性 - 但對於大型集合來說速度較慢且資源消耗大 現在,如果我們能結合兩者的優點呢! 3️⃣ ColBERT ColBERT 將交叉編碼器的力量與雙編碼器的可擴展性結合在一起。 - 分別編碼查詢和文檔 - 創建交互矩陣,計算所有查詢-文檔令牌對之間的相似性分數 - 對每個查詢令牌在文檔令牌中取最大分數 - 將最大分數相加以獲得最終匹配分數 _____ 這就是總結! 如果你覺得這很有啟發性,請與你的網絡分享。 找到我 → @akshay_pachaar ✔️ 獲取更多關於 LLM、AI 代理和機器學習的見解和教程!
46.68K