Tích hợp LangChain
Tìm hiểu cách tích hợp Rememberizer như một trình truy xuất LangChain để cung cấp cho ứng dụng LangChain của bạn quyền truy cập vào tìm kiếm cơ sở dữ liệu vector mạnh mẽ.
Tích hợp LangChain
Rememberizer tích hợp với LangChain thông qua lớp RememberizerRetriever
, cho phép bạn dễ dàng kết hợp khả năng tìm kiếm ngữ nghĩa của Rememberizer vào các ứng dụng được hỗ trợ bởi LangChain. Hướng dẫn này giải thích cách thiết lập và sử dụng tích hợp này để xây dựng các ứng dụng LLM tiên tiến với quyền truy cập vào cơ sở tri thức của bạn.
Giới thiệu
LangChain là một framework phổ biến để xây dựng các ứng dụng với các mô hình ngôn ngữ lớn (LLMs). Bằng cách tích hợp Rememberizer với LangChain, bạn có thể:
Sử dụng cơ sở kiến thức Rememberizer của bạn trong các ứng dụng RAG (Tạo ra Tăng cường Tìm kiếm)
Tạo ra các chatbot có quyền truy cập vào tài liệu và dữ liệu của bạn
Xây dựng các hệ thống trả lời câu hỏi tận dụng kiến thức của bạn
Phát triển các tác nhân có thể tìm kiếm và suy luận trên thông tin của bạn
Sự tích hợp có sẵn trong mô-đun langchain_community.retrievers
.
Bắt đầu
Điều kiện tiên quyết
Trước khi bắt đầu, bạn cần:
Một tài khoản Rememberizer với Common Knowledge đã được tạo
Một khóa API để truy cập vào Common Knowledge của bạn
Môi trường Python với LangChain đã được cài đặt
Để biết hướng dẫn chi tiết về cách tạo Common Knowledge và tạo khóa API, xem Đăng ký và Sử dụng Khóa API.
Cài đặt
Cài đặt các gói cần thiết:
pip install langchain langchain_community
Nếu bạn dự định sử dụng các mô hình OpenAI (như được hiển thị trong các ví dụ bên dưới):
pip install langchain_openai
Thiết lập xác thực
Có hai cách để xác thực RememberizerRetriever
:
Biến Môi Trường: Đặt biến môi trường
REMEMBERIZER_API_KEY
import os os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key"
Tham Số Trực Tiếp: Truyền trực tiếp khóa API khi khởi tạo bộ thu
retriever = RememberizerRetriever(rememberizer_api_key="rem_ck_your_api_key")
Tùy Chọn Cấu Hình
Lớp RememberizerRetriever
chấp nhận các tham số sau:
top_k_results
int
10
Số lượng tài liệu để trả về từ tìm kiếm
rememberizer_api_key
str
None
Khóa API để xác thực (tùy chọn nếu được đặt là biến môi trường)
Trong bối cảnh, bộ truy xuất thực hiện các cuộc gọi API đến điểm cuối tìm kiếm của Rememberizer với các tham số cấu hình bổ sung:
prev_chunks
Số lượng khối trước khối khớp để bao gồm (mặc định: 2)
next_chunks
Số lượng khối sau khối khớp để bao gồm (mặc định: 2)
return_full_content
Có trả về nội dung tài liệu đầy đủ hay không (mặc định: true)
Cách Sử Dụng Cơ Bản
Dưới đây là một ví dụ đơn giản về việc truy xuất tài liệu từ Rememberizer bằng cách sử dụng LangChain:
import os
from langchain_community.retrievers import RememberizerRetriever
Đặt khóa API của bạn
os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key"
Khởi tạo bộ truy xuất
retriever = RememberizerRetriever(top_k_results=5)
Lấy tài liệu liên quan cho một truy vấn
docs = retriever.get_relevant_documents(query="Vector embeddings hoạt động như thế nào?")
Hiển thị tài liệu đầu tiên
if docs: print(f"Tài liệu: {docs[0].metadata['name']}") print(f"Nội dung: {docs[0].page_content[:200]}...")
### Hiểu Cấu Trúc Tài Liệu
Mỗi tài liệu được trả về bởi bộ thu hồi có:
- `page_content`: Nội dung văn bản của đoạn tài liệu đã khớp
- `metadata`: Thông tin bổ sung về tài liệu
Ví dụ về cấu trúc metadata:
```python
{
'id': 13646493,
'document_id': '17s3LlMbpkTk0ikvGwV0iLMCj-MNubIaP',
'name': 'What is a large language model (LLM)_ _ Cloudflare.pdf',
'type': 'application/pdf',
'path': '/langchain/What is a large language model (LLM)_ _ Cloudflare.pdf',
'url': 'https://drive.google.com/file/d/17s3LlMbpkTk0ikvGwV0iLMCj-MNubIaP/view',
'size': 337089,
'created_time': '',
'modified_time': '',
'indexed_on': '2024-04-04T03:36:28.886170Z',
'integration': {'id': 347, 'integration_type': 'google_drive'}
}
Ví dụ Nâng Cao
Xây dựng Hệ thống Hỏi-Đáp RAG
Ví dụ này tạo ra một hệ thống hỏi-đáp mà truy xuất thông tin từ Rememberizer và sử dụng GPT-3.5 để hình thành câu trả lời:
import os
from langchain_community.retrievers import RememberizerRetriever
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
Thiết lập khóa API
os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key" os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
Khởi tạo bộ truy xuất và mô hình ngôn ngữ
retriever = RememberizerRetriever(top_k_results=5) llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
Tạo một chuỗi QA truy xuất
qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", # Phương pháp đơn giản nhất - chỉ cần nhét tất cả tài liệu vào lời nhắc retriever=retriever, return_source_documents=True )
Đặt câu hỏi
response = qa_chain.invoke({"query": "RAG là gì trong bối cảnh AI?"})
In ra câu trả lời
print(f"Câu trả lời: {response['result']}") print("\nNguồn:") for idx, doc in enumerate(response['source_documents']): print(f"{idx+1}. {doc.metadata['name']}")
### Xây Dựng Một Đại Lý Đàm Thoại Có Bộ Nhớ
Ví dụ này tạo ra một đại lý đàm thoại có thể duy trì lịch sử cuộc trò chuyện:
```python
import os
from langchain_community.retrievers import RememberizerRetriever
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
Thiết lập khóa API
os.environ["REMEMBERIZER_API_KEY"] = "rem_ck_your_api_key" os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
Khởi tạo các thành phần
retriever = RememberizerRetriever(top_k_results=5) llm = ChatOpenAI(model_name="gpt-3.5-turbo") memory = ConversationBufferMemory( memory_key="chat_history", return_messages=True )
Tạo chuỗi hội thoại
conversation = ConversationalRetrievalChain.from_llm( llm=llm, retriever=retriever, memory=memory )
Ví dụ cuộc trò chuyện
questions = [ "RAG là gì?", "Các mô hình ngôn ngữ lớn sử dụng nó như thế nào?", "Những hạn chế của phương pháp này là gì?", ]
for question in questions: response = conversation.invoke({"question": question}) print(f"Câu hỏi: {question}") print(f"Câu trả lời: {response['answer']}\n")
## Thực Hành Tốt Nhất
### Tối ưu hóa hiệu suất truy xuất
1. **Cụ thể với các truy vấn**: Các truy vấn cụ thể hơn thường mang lại kết quả tốt hơn
2. **Điều chỉnh `top_k_results`**: Bắt đầu với 3-5 kết quả và điều chỉnh dựa trên nhu cầu ứng dụng
3. **Sử dụng cửa sổ ngữ cảnh**: Bộ truy xuất tự động bao gồm ngữ cảnh xung quanh các đoạn khớp
### Các cân nhắc về bảo mật
1. **Bảo vệ khóa API của bạn**: Lưu trữ nó một cách an toàn bằng cách sử dụng biến môi trường hoặc công cụ quản lý bí mật
2. **Tạo khóa riêng biệt**: Tạo các khóa API riêng cho các ứng dụng khác nhau
3. **Thay đổi khóa thường xuyên**: Định kỳ tạo khóa mới và loại bỏ các khóa cũ
### Mô hình tích hợp
1. **Xử lý trước khi truy xuất**: Xem xét việc tiền xử lý các truy vấn của người dùng để cải thiện độ liên quan của tìm kiếm
2. **Lọc sau khi truy xuất**: Lọc hoặc xếp hạng các tài liệu đã truy xuất trước khi chuyển cho LLM
3. **Tìm kiếm kết hợp**: Kết hợp Rememberizer với các bộ truy xuất khác bằng cách sử dụng `EnsembleRetriever`
```python
from langchain.retrievers import EnsembleRetriever
from langchain_community.retrievers import RememberizerRetriever, WebResearchRetriever
Tạo bộ thu thập
rememberizer_retriever = RememberizerRetriever(top_k_results=3) web_retriever = WebResearchRetriever(...) # Cấu hình bộ thu thập khác
Tạo một bộ với điểm số có trọng số
ensemble_retriever = EnsembleRetriever( retrievers=[rememberizer_retriever, web_retriever], weights=[0.7, 0.3] # Kết quả từ Rememberizer có trọng số cao hơn )
## Khắc phục sự cố
### Vấn đề Thường Gặp
1. **Lỗi xác thực**: Xác minh rằng khóa API của bạn đúng và được cấu hình chính xác
2. **Không có kết quả trả về**: Đảm bảo rằng Kiến thức Chung của bạn chứa thông tin liên quan
3. **Giới hạn tần suất**: Hãy chú ý đến giới hạn tần suất API cho các ứng dụng có khối lượng lớn
### Mẹo Gỡ Rối
- Đặt chế độ gỡ rối của LangChain để xem các cuộc gọi API chi tiết:
```python
import langchain
langchain.debug = True
Kiểm tra kết quả tìm kiếm thô trước khi truyền cho LLM để xác định các vấn đề truy xuất
Tài nguyên liên quan
Hướng dẫn khái niệm [Retriever] của LangChain (https://python.langchain.com/docs/concepts/#retrievers)
Hướng dẫn cách thực hiện [Retriever] của LangChain (https://python.langchain.com/docs/how_to/#retrievers)
Tài liệu [API] của Rememberizer (https://docs.rememberizer.ai/developer/api-docs/)
[Cửa hàng Vector] (https://docs.rememberizer.ai/developer/vector-stores) trong Rememberizer
[Tạo một Rememberizer GPT] (creating-a-rememberizer-gpt.md) - Một phương pháp thay thế cho việc tích hợp AI
Last updated