Closed2

LangChainのContextual Compression Retrieverを試す

kun432kun432

参考

https://blog.langchain.dev/improving-document-retrieval-with-contextual-compression/

https://qiita.com/bluesky-firmament/items/669b716c6db9b02b49fd

https://note.com/mahlab/n/n7d72e83904cc

Contextual Compression Retriever

LangChainには元々QAボット向けのQAChainが用意されている。

https://python.langchain.com/en/latest/use_cases/question_answering.html

https://ict-worker.com/ai/langchain-chunk.html

ただし、QAChainでは「単純に分割」されたドキュメントを「類似検索」しているだけなので、

  • ユーザの質問に対してコンテキストにあっているドキュメントを正しく抽出できているのか?正しくない場合もあるのではないか?
  • 正しくないドキュメントが含まれていると、
    • 無駄にトークンを使ってしまう
    • LLMが無駄な情報を含めてしまい回答精度が下がる

という可能性がある。

そこで、上記に対して、以下の抽象レイヤーを追加したのがContextual Compression Retriever。

  • 抽出したドキュメントを圧縮・フィルタリングすることで、余計な情報を削る

これにより、「より関連性が高い」情報を「より多く」LLMに渡すことにより、「より精度の高い」回答を得ることが実現できる、というものの様子。

ただQAChainでもchain_typeを選択することで「より精度の高い」回答を得るという手段は用意されていたと思うので、Contextual Compression Retrieverがどういう違いを生むのか?を念頭に試しに実装してみる。

kun432kun432

色々変わったのと、最近はLangChain使わずに素で書いてるので、一旦クローズ。

このスクラップは2023/10/13にクローズされました