LangChain統合
RememberizerをLangChainリトリーバーとして統合し、LangChainアプリケーションに強力なベクトルデータベース検索へのアクセスを提供する方法を学びます。
Last updated
RememberizerをLangChainリトリーバーとして統合し、LangChainアプリケーションに強力なベクトルデータベース検索へのアクセスを提供する方法を学びます。
Last updated
Rememberizerは、RememberizerRetriever
クラスを通じてLangChainと統合されており、Rememberizerのセマンティック検索機能をLangChainを活用したアプリケーションに簡単に組み込むことができます。このガイドでは、知識ベースにアクセスする高度なLLMアプリケーションを構築するために、この統合を設定し使用する方法を説明します。
LangChainは、大規模言語モデル(LLM)を使用してアプリケーションを構築するための人気のフレームワークです。RememberizerをLangChainと統合することで、次のことができます:
RAG(Retrieval Augmented Generation)アプリケーションでRememberizerの知識ベースを使用する
ドキュメントやデータにアクセスできるチャットボットを作成する
あなたの知識を活用した質問応答システムを構築する
あなたの情報を検索し推論できるエージェントを開発する
統合はlangchain_community.retrievers
モジュールで利用可能です。
始める前に、次のものが必要です:
Common Knowledge を作成した Rememberizer アカウント
Common Knowledge にアクセスするための API キー
LangChain がインストールされた Python 環境
必要なパッケージをインストールします:
OpenAIモデルを使用する予定がある場合(以下の例に示すように):
RememberizerRetriever
を認証する方法は2つあります:
環境変数: REMEMBERIZER_API_KEY
環境変数を設定します
直接パラメータ: リトリーバーを初期化する際にAPIキーを直接渡します
RememberizerRetriever
クラスは、これらのパラメータを受け入れます:
top_k_results
int
10
検索から返すドキュメントの数
rememberizer_api_key
str
None
認証用のAPIキー(環境変数として設定されている場合はオプション)
裏側では、リトリーバーは追加の設定可能なパラメータを使用して Rememberizer の検索エンドポイントにAPIコールを行います:
prev_chunks
一致したチャンクの前に含めるチャンクの数(デフォルト:2)
next_chunks
一致したチャンクの後に含めるチャンクの数(デフォルト:2)
return_full_content
完全なドキュメントコンテンツを返すかどうか(デフォルト:true)
以下は、LangChainを使用してRememberizerからドキュメントを取得する簡単な例です:
リトリーバーによって返される各ドキュメントには以下が含まれます:
page_content
: 一致したドキュメントチャンクのテキストコンテンツ
metadata
: ドキュメントに関する追加情報
メタデータ構造の例:
この例では、Rememberizerから情報を取得し、GPT-3.5を使用して回答を作成する質問応答システムを作成します:
os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key" os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
retriever = RememberizerRetriever(top_k_results=5) llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", # 最も簡単な方法 - すべての文書をプロンプトに詰め込む retriever=retriever, return_source_documents=True )
response = qa_chain.invoke({"query": "AIの文脈におけるRAGとは何ですか?"})
print(f"答え: {response['result']}") print("\n出典:") for idx, doc in enumerate(response['source_documents']): print(f"{idx+1}. {doc.metadata['name']}")
os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key" os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
retriever = RememberizerRetriever(top_k_results=5) llm = ChatOpenAI(model_name="gpt-3.5-turbo") memory = ConversationBufferMemory( memory_key="chat_history", return_messages=True )
conversation = ConversationalRetrievalChain.from_llm( llm=llm, retriever=retriever, memory=memory )
questions = [ "RAGとは何ですか?", "大規模言語モデルはどのようにそれを使用しますか?", "このアプローチの制限は何ですか?", ]
for question in questions: response = conversation.invoke({"question": question}) print(f"質問: {question}") print(f"回答: {response['answer']}\n")
rememberizer_retriever = RememberizerRetriever(top_k_results=3) web_retriever = WebResearchRetriever(...) # 別のリトリーバーを設定する
ensemble_retriever = EnsembleRetriever( retrievers=[rememberizer_retriever, web_retriever], weights=[0.7, 0.3] # Rememberizerの結果はより高い重みを持つ )
LLMに渡す前に生の検索結果を調べて、取得の問題を特定します
Common Knowledge の作成と API キーの生成に関する詳細な手順については、を参照してください。
LangChain
LangChain
Rememberizer
Rememberizer の
- AI 統合のための代替アプローチ