挙げる
クエリ変換のユーザーズマニュアルでは、拡張世代(ラグ)クエリーエンジン、インテリジェンス、またはその他のプロセスにおいて、ユーザーのクエリーを実行する前に変換と分解を行う複数のテクニック。これらの変換により、AIアプリケーションにおける応答の品質と関連性を向上させることができる。
https://github.com/adithya-s-k/AI-Engineering.academy/tree/main/RAG/06_Query_Transformation_RAG
クエリー変換技術
1.ルーティング
ルーティングは、与えられたクエリに関連するツールのサブセットを識別することを含む。
フローチャート LR A[ユーザークエリ]→B[セレクタ] B→C[ツール1] B→D[ツール2] B→E[ツールN] C & D & E→F[選択ツール]
実現方法:
- 利用する
LLMSingleSelector
もしかしたらLLMMマルチセレクター
大規模な言語モデルに基づいて選択する - 利用する
ピダンティックシングルセレクター
もしかしたらピダンティックマルチセレクター
関数呼び出しに基づく選択を行う - 利用する
ツールメタデータ
ツールオプションの定義
2.クエリの書き換え
クエリ書き換えは、検索結果を改善するために、元のクエリの複数のバリアントを生成することを含む。
実現方法:
- 利用する
プロンプトテンプレート
およびカスタム実装のための大規模言語モデル(LLM)。 - 利用する
HyDEQueryTransform
仮想的な文書埋め込みクエリの実行
3.サブクエリの生成
このテクニックは、複雑なクエリを複数のサブクエリに分解し、それぞれのサブクエリが特定のツールを指向する。
実現方法:
- 利用する
OpenAIQuestionGenerator
もしかしたらLLMQuestionGenerator
- 利用する
ツールメタデータ
ツールオプションの定義
4.リアクト・インテリジェント・ボディ・ツールの選択
この方法では リ・アクト フレームワークは、使用するツールと、そのツール上で実行するクエリーを決定する。
実現方法:
- 利用する
ReActChatFormatter
入力フォーマットの実行 - 利用する
ReActOutputParser
大規模言語モデル出力の解析 - 利用する
ファンクションツール
定義ツール
利用する
それぞれのクエリ変換テクニックは、より大きなシステムのモジュールコンポーネントとして使用することができる。以下は、クエリ書き換えの基本的な使用例です:
from llama_index.core import PromptTemplate
from llama_index.llms.openai import OpenAI
query_gen_prompt = PromptTemplate("Your prompt template is here")
llm = OpenAI(model="gpt-3.5-turbo")
def generate_queries(query: str, llm, num_queries: int = 4):
response = llm.predict(query_gen_prompt, num_queries=num_queries, query=query)
queries = response.split("\n")
queriesを返す
queries = generate_queries("Your queries are here", llm)
概要
クエリ変換ユーザーマニュアルは、開発者がAIアプリケーションのクエリ処理を強化するためのテクニック一式を提供します。これらの変換テクニックを活用することで、開発者はより強力で正確な情報検索およびQ&Aシステムを作成することができます。
詳細な実装や、特定のクエリーエンジンやリトリーバーとの統合については、LlamaIndexのドキュメントを参照してください。
このREADMEでは、ルーティング、クエリ書き換え、サブクエリ生成、ReActインテリジェントボディツール選択の4つの主要なクエリ変換テクニックを取り上げ、各クエリ変換テクニックの簡単な説明とマーメイドチャートを含む、クエリ変換ユーザーズマニュアルの概要を説明しています。
各セクションには、フローチャートの視覚化、技術の簡単な説明、基本的な実装の詳細が含まれています。さらに、このREADMEには、クエリ書き換えの簡単な使用例が含まれており、ユーザーに出発点を提供します。
このREADMEのどの部分を詳しく説明したり、修正したりしてほしいですか?