LangChain 整合

學習如何將 Rememberizer 作為 LangChain 檢索器整合,以便為您的 LangChain 應用程序提供強大的向量數據庫搜索功能。

LangChain 整合

Rememberizer 通過 RememberizerRetriever 類別與 LangChain 整合,使您能夠輕鬆地將 Rememberizer 的語義搜索功能納入您的 LangChain 驅動的應用程序中。本指南說明了如何設置和使用此整合,以構建具有訪問您的知識庫的高級 LLM 應用程序。

介紹

LangChain 是一個流行的框架,用於構建大型語言模型(LLMs)應用程序。通過將 Rememberizer 與 LangChain 整合,您可以:

  • 在 RAG(檢索增強生成)應用程序中使用您的 Rememberizer 知識庫

  • 創建可以訪問您的文檔和數據的聊天機器人

  • 構建利用您的知識的問答系統

  • 開發可以搜索和推理您信息的代理

該整合可在 langchain_community.retrievers 模塊中使用。

開始使用

前置條件

在開始之前,您需要:

  1. 一個已創建的 Rememberizer 帳戶,並擁有 Common Knowledge

  2. 一個用於訪問您的 Common Knowledge 的 API 金鑰

  3. 安裝了 LangChain 的 Python 環境

有關創建 Common Knowledge 和生成 API 金鑰的詳細說明,請參見 註冊和使用 API 金鑰

安裝

安裝所需的套件:

如果您計劃使用 OpenAI 模型(如下例所示):

認證設置

有兩種方式來驗證 RememberizerRetriever

  1. 環境變數:設置 REMEMBERIZER_API_KEY 環境變數

  2. 直接參數:在初始化檢索器時直接傳遞 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 獲取文檔的簡單示例:

設定您的 API 金鑰

os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key"

初始化檢索器

retriever = RememberizerRetriever(top_k_results=5)

獲取與查詢相關的文件

docs = retriever.get_relevant_documents(query="向量嵌入是如何工作的?")

顯示第一個文件

if docs: print(f"文件: {docs[0].metadata['name']}") print(f"內容: {docs[0].page_content[:200]}...")

進階範例

建立 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": "在人工智慧的背景下,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 之前檢查原始搜索結果,以識別檢索問題

相關資源

Last updated