OpenAI API による実装例 from langchain.chains import ConversationalRetrievalChain from langchain.chat_models import ChatOpenAI from langchain.memory import ConversationSummaryBufferMemory from langchain.vectorstores import FAISS # LLM の初期化 llm = ChatOpenAI(temperature=0.7) # 要約バッファメモリの設定 memory = ConversationSummaryBufferMemory( llm=llm, memory_key="chat_history", return_messages=True, max_token_limit=1000 ) # 検索用ベクトルストアの作成 vectorstore = FAISS.from_documents(documents, embeddings) # 対話型検索チェーンの構築 qa_chain = ConversationalRetrievalChain.from_llm( llm=llm, retriever=vectorstore.as_retriever(), memory=memory ) 実装のポイント 要約バッファ 長い会話履歴を自動要約 ベクトル検索 質問関連の文書を動的抽出 統合チェーン 要約と検索を連携した回答 利点 長時間の対話でもコンテキスト制限を超えない 必要な情報のみ検索で取得(効率的) カスタマイズ性が高く拡張可能 Python による実装例 ユーザー入力 質問・指示 ConversationSummaryBufferMemory 対話履歴の自動要約・管理 RetrievalQA ベクトルDB (FAISS )から関連文書検索 OpenAI API 要約・文書・質問を統合して回答生成 回答 コンテキストを活用した高品質な回答 Genspark で作成