「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
RAG(Retrieval-Augmented Generation)
- LLMと情報検索を組み合わせた技術。
- 情報取得や質問応答の分野で強力。
開発方法 †
フレームワークやVDBを使用する。
機能・コンポーネント †
チャンク(Chunk) †
- Chunkは、大量のデータを小さなSegment(Chunk)に分割する。
- このプロセスにより、特定の情報を検索し易くなる。
- 各Chunkは、独立して検索可能な単位となる。
埋め込み(Embedding) †
- Embeddingは、テキストデータを数値ベクトルに変換するプロセス。
- ベクトル化により、テキストデータの意味的な類似性を計算が容易になる。
- RAGでは、Embeddingを使用して、検索QueryとDB内のChunkとの類似性を計算し、最も関連性の高いChunkを特定する。
検索(Retrieval) †
- 検索部分では、Queryに対して関連性の高い情報をDBから取得する。
- 具体的には、プロンプトに対して最も関連性の高いChunkを検索エンジンや埋め込みベクトルの類似性に基づいて見つけ出す。
拡張(Augmented) †
ユーザ入力+取得した情報を統合して拡張。
生成(Generation) †
生成部分では、統合情報を入力し、LLMがユーザーに回答を提供する。
プロセス †
知識情報の分割 †
ユーザーが知識情報を入力
知識情報の埋め込み †
Embeddingで知識情報を埋め込みベクトルに変換
質問の入力(Query Input) †
ユーザーが質問を入力
質問の埋め込み(Query Embedding) †
Embeddingで質問を埋め込みベクトルに変換
情報の検索(Information Retrieval) †
質問の埋め込みベクトルを使用して、DB内の関連Chunkを検索
情報の生成(Information Generation) †
- 検索されたChunkを基にプロンプトを生成
- LLMが生成されたプロンプトを元に回答を生成
回答の提供(Answer Delivery) †
最終的にユーザーに回答を提供
キーワード †
埋め込みベクトル(Embedding Vector) †
Embeddingで、テキストをベクトルに変換した表現方法。
類似性計算(Similarity Calculation) †
埋め込みベクトル間の類似性を内積、距離などで計算するプロセス。
詳細 †
体系 †
ハイブリッドサーチ †
- 性質の異なる複数の検索方式(例えばベクトル検索とキーワード検索)を組み合わせて検索精度を向上させる手法
- キーワードベースの検索とベクトル検索を組み合わせたハイブリッド検索で精度が高く出るという結果が報告されている。
- ベクトル検索は
- BERT
- Sentence-Transformers
リランキング †
- 検索で得たチャンクに対して、クエリとの類似度が高い順に並び変え再度ランク付けをする手法
- 検索はベクトルの内積計算にして、リランキングでTransformerやLLMを使用する。
- これにより、
サブクエリ †
- 入力クエリが複雑な場合や、複合的な意味を持っている場合に有効な手法
- 入力クエリをサブクエリに分解し、それぞれのサブクエリでのレスポンスを最後に合成して回答する
- サブクエリ1
Xの詳細な定義とその意味は何ですか?
- サブクエリ2
Yの詳細な定義とその意味は何ですか?
- 最終レスポンス
サブクエリ1への回答+サブクエリ2への回答
HyDE †
クエリに対する仮回答を生成させ、仮回答で検索
ステップバックプロンプト †
クエリを一段抽象化させ、抽象化したクエリへの検索結果も合成して回答
RAG Fusion †
類似クエリを生成させ、各クエリでの検索結果を統合して回答を生成
マルチステップクエリ †
クエリの分解と段階的な推進により、回答を洗練させる手法
チャンク拡張 †
検索でヒットした前後のチャンクもコンテキストに含める
Pandas Dataframe †
CSVのようなデータテーブルの構造を保ったままクエリが可能
TextToSQL †
自然言語をSQLに変換して、データベースから必要な情報を抽出
GraphRAG †
参考 †
理論 †
実装 †