Create_RAG
背景 gmailの返答を自動化するプロジェクトを推進しています。 そこで、RAGですね。もうだいぶ時間が経っていますが、しっかりやっていきたいと思う。 RAG = 「Retrieval-Augmented Generation」 これを理解できればもう仕組みを理解したも同然です。 が一応説明しておきます。 RAGの仕組み めっちゃ簡単にいうと、 ベクトルデータベースに保存されたナレッジから 問い合わせと類似するナレッジを検索し引っ張り出し それを元にGEN AIに回答を作らせる という流れになります。 1でベクトルデータベースにナレッジを保存する時には、元の自然言語をベクトル表現に変換した物を格納する必要があります。 このベクトル変換器のことを「Embedding model」と言います。 x: 自然言語 f: Embedding model とすると y = f(x) で得られたy(とそれに対応するx)をベクトルDBに格納しておくわけですね。 x_q: 問い合わせが来た時 y_q = f(x_q) から得られるy_qと類似しているy_1, y_2, y_3, ,,, y_nを検索し、 それに対応するx_1, x_2, x_3, ,,, x_n を出力し、 ans = LLM(x_1, x_2, x_3, ,,, x_n) とう感じで回答を作らせるという流れです。 Embedding modelsの選定 こちらの記事に書いてある通り、Embedding modelの選定がRAG全体の回答生成性能に大きく影響する。 まあ、chatGPTに聞いた結果これが一番いいのかな。 BAAI/bge-base-en 今回RAGを構築するにあたり使うソフト vector DB: qdrant embedding model: BAAI/bge-base-en LLM: phi4 14b on ollama (@ rtx 3060 12g) Langchainなどの統合的なライブラリは使わない。なぜなら自由度が低いから。 vector DBでの検索も普通にREST APIでできるので問題なさそう。 ...