クエリエンジンとレスポンス合成
クエリエンジンが、refine、compact、tree_summarizeなどの戦略で検索と合成を統合します。
「クエリエンジンとレスポンス合成」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
クエリエンジン = 検索 + 生成
LlamaIndex のクエリエンジンには、次の 2 つの段階があります:
- Retrieval — 関連するチャンクを検索します
- Synthesis — 取得したチャンクから回答を生成します
どちらも設定を変更できます。
The Default Query Engine
query_engine = index.as_query_engine()
response = query_engine.query('What is our refund policy?')
print(response.response) # the answer
print(response.source_nodes) # the chunks usedレスポンスモード
検索で取得したチャンクから最終回答を組み立てる方法です:
- refine — チャンクを 1 つずつ渡し、回答を段階的に改善します(最も正確ですが、最も遅くなります)
- compact — 1 回の呼び出しで、コンテキストに入るだけ多くのチャンクを詰め込みます(デフォルト)
- tree_summarize — 再帰的に要約します
- simple_summarize — すべてのチャンクを 1 回の呼び出しで処理します
Setting Response Mode
query_engine = index.as_query_engine(response_mode='tree_summarize')Configuring Retrieval
query_engine = index.as_query_engine(
similarity_top_k=5,
response_mode='compact'
)カスタムプロンプト
独自のプロンプトテンプレートを組み込みます:
from llama_index.core.prompts import PromptTemplate
qa_template = PromptTemplate(
'Context:\n{context_str}\n\nQuestion: {query_str}\nAnswer:'
)
query_engine.update_prompts({'response_synthesizer:text_qa_template': qa_template})Streaming Responses
query_engine = index.as_query_engine(streaming=True)
response = query_engine.query('Hello')
for token in response.response_gen:
print(token, end='', flush=True)引用
CitationQueryEngine を使うと、LLM が生成した引用を取得できます:
from llama_index.core.query_engine import CitationQueryEngine
engine = CitationQueryEngine.from_args(index, similarity_top_k=4)
response = engine.query('What is our refund policy?')
print(response.response)
for i, node in enumerate(response.source_nodes):
print(f'[{i+1}] {node.metadata}')後処理
生成前に、検索で取得したノードの順位を付け直したり、フィルタリングしたりできます:
from llama_index.postprocessor.cohere_rerank import CohereRerank
rerank = CohereRerank(api_key=COHERE_KEY, top_n=3)
query_engine = index.as_query_engine(
similarity_top_k=20, # retrieve 20
node_postprocessors=[rerank] # rerank to top 3
)Metadata Filters
from llama_index.core.vector_stores import MetadataFilters, ExactMatchFilter
filters = MetadataFilters(filters=[
ExactMatchFilter(key='department', value='engineering')
])
query_engine = index.as_query_engine(filters=filters)Async Queries
response = await query_engine.aquery('What is our refund policy?')
print(response.response)チャットエンジン
メモリを使った複数ターンの会話には、次を使います:
chat_engine = index.as_chat_engine(chat_mode='context')
response = chat_engine.chat('What is our refund policy?')
followup = chat_engine.chat('And for opened items?')パイプラインとワークフロー
複雑な複数ステップのエージェントには、LlamaIndex Workflows が Python らしいイベント駆動のフローを提供します。考え方としては LangGraph に似ています。
レスポンスモード
最も遅い一方で、最も正確なレスポンスモードはどれでしょうか。
復習
top_k、response_mode、後処理、メタデータフィルターを設定して、クエリエンジンの動作を調整します。信頼できる回答には CitationQueryEngine を使います。
よくある質問
「クエリエンジンとレスポンス合成」レッスンは無料ですか?
はい。「クエリエンジンとレスポンス合成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「クエリエンジンとレスポンス合成」で何を学びますか?
クエリエンジンが、refine、compact、tree_summarizeなどの戦略で検索と合成を統合します。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「クエリエンジンとレスポンス合成」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ドキュメントローダーとパーサー
- インデックス階層:ベクトル、ツリー、キーワード
- クエリエンジンとレスポンス合成
- サブクエリ分解戦略