LangChain統合
RememberizerをLangChainリトリーバーとして統合し、LangChainアプリケーションに強力なベクトルデータベース検索へのアクセスを提供する方法を学びます。
LangChain統合
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 環境
Common Knowledge の作成と API キーの生成に関する詳細な手順については、API キーの登録と使用を参照してください。
インストール
必要なパッケージをインストールします:
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: ドキュメントに関する追加情報
メタデータ構造の例:
高度な例
RAG質問応答システムの構築
この例では、Rememberizerから情報を取得し、GPT-3.5を使用して回答を作成する質問応答システムを作成します:
APIキーの設定
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チェーンを作成する
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']}")
APIキーの設定
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に渡す前に生の検索結果を調べて、取得の問題を特定します
関連リソース
LangChain リトリーバーの概念ガイド
LangChain リトリーバーのハウツーガイド
Rememberizer API ドキュメント
Rememberizer の ベクターストア
Rememberizer GPT の作成 - AI 統合のための代替アプローチ
Last updated