Open3
LLM
大規模言語モデルの知識を補完するための Retriever の紹介
Retrieverとは
言語モデルの知識を補完するために関連する文書を外部の文書集合から検索してきて言語モデルに入力として与えるような技術。Retrieval-augmented Language Model。
Retrieverの具体的な役割
質問に関連するドキュメントを抽出することが主な役割
【手順】
Retriever
- Retriever
を用いたf とq のembedding(d_1, d_2, ...)
-
とe_q の類似度を計算し、上位k件の_{d_i} を抽出d_i
補足情報
OpenAIのembeddingについて
- 有用だが、OpenAIのembeddingが学習で使用してないような特殊なデータを扱いたいときは精度が劣化する可能性がある。
- 同様にOpenAIのembeddingの学習が行われた以降の知識に関しても精度が劣化する。(最新情報が反映できていない)
RAG
- GPT4 APIは高いので70B Llama-2 and Llama-2 32k (Abacus Giraffe) modelsを使った方がコストを抑えられる。
Advanced RAG
参考資料
RAGの課題
- 埋め込むコンテンツのサイズが大きい、つまりchunk sizeが大きいと情報が失われる。
その1:Smaller Child Chunks Referring to Bigger Parent Chunks
類似度検索では文書のチャンクサイズを小さくして検索を行い、ユーザからの質問に対して参照させる場合(Retrieve)は大きいチャンクサイズで返す。ただし、この大きいチャンク(親チャンク)は類似度検索で抽出した小さいチャンク(子チャンク)の文書が参照しているものである。
その2:Sentence Window Retrieval
その1の子チャンクがsentence、親チャンクをsentenceを含めた前後5 sentencesとしてRAGを実現