Làm cách nào để làm việc với bộ nhớ đệm trong LangChain?

Lam Cach Nao De Lam Viec Voi Bo Nho Dem Trong Langchain



Bộ nhớ đệm là quá trình lưu trữ và tìm nạp dữ liệu gần đây nhất hoặc được sử dụng thường xuyên từ mô hình để không phải tính toán lại liên tục. Việc nhúng văn bản có thể được sử dụng để chuyển đổi dữ liệu văn bản thành số và áp dụng các kỹ thuật bộ đệm vào dữ liệu đó có thể cải thiện hiệu quả của mô hình. LangChain cho phép các nhà phát triển xây dựng mô hình bộ đệm bằng thư viện CacheBackedEmbeddings.

Bài đăng này sẽ trình bày quy trình làm việc với bộ nhớ đệm trong LangChain.







Làm cách nào để làm việc với bộ nhớ đệm trong LangChain?

Bộ nhớ đệm trong LangChain trên các mô hình nhúng văn bản có thể được sử dụng thông qua các bộ dữ liệu khác nhau như sử dụng kho lưu trữ vectơ, dữ liệu trong bộ nhớ hoặc dữ liệu từ hệ thống tệp. Việc áp dụng các phương pháp bộ đệm có thể nhận được kết quả đầu ra nhanh chóng và mô hình có thể áp dụng các tìm kiếm tương tự trên dữ liệu hiệu quả hơn.



Để tìm hiểu quy trình làm việc với bộ nhớ đệm trong LangChain, chỉ cần thực hiện các bước được liệt kê:



Bước 1: Cài đặt mô-đun
Trước tiên, hãy bắt đầu quá trình làm việc với bộ nhớ đệm bằng cách cài đặt các mô hình được yêu cầu. Mô hình đầu tiên ở đây là LangChain chứa tất cả các thư viện cần thiết cho quy trình:





pip cài đặt chuỗi lang

Mô-đun FAISS được yêu cầu thực hiện tìm kiếm tương tự để trích xuất hoặc tạo đầu ra dựa trên đầu vào do người dùng cung cấp:



pip cài đặt faiss-gpu

Mô-đun cuối cùng cần cài đặt trong hướng dẫn này là OpenAI. Mô-đun này có thể được sử dụng để tạo phần nhúng dữ liệu bằng phương thức OpenAIEmbeddings():

pip cài đặt openai

Sau khi cài đặt tất cả các mô-đun, chỉ cần thiết lập môi trường bằng khóa API từ môi trường OpenAI bằng phím “ Bạn ' Và ' vượt qua “ thư viện:

nhập khẩu chúng tôi
nhập khẩu

os.environ [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'Khóa API OpenAI:' )

Bước 2: Nhập thư viện
Sau khi thiết lập hoàn tất, bạn chỉ cần nhập các thư viện để làm việc với các kỹ thuật bộ nhớ đệm trong LangChain:

từ langchain.storage nhập InMemoryStore
từ langchain.embeddings nhập CacheBackedEmbeddings
từ langchain.storage nhập LocalFileStore
từ langchain.embeddings nhập OpenAIEmbeddings
từ langchain.document_loaders nhập TextLoader
từ langchain.embeddings.openai nhập OpenAIEmbeddings
từ langchain.text_spitter nhập CharacterTextSplitter
từ langchain.vectorstores nhập FAISS

Bước 3: Xây dựng mô hình bộ nhớ đệm
Sau khi nhập thư viện, chỉ cần gọi phương thức OpenAIEmbeddings() để xây dựng mô hình và lưu nó vào biến:

cơ bản_embeddings=OpenAIEmbeddings ( )

Bây giờ, áp dụng bộ đệm bằng phương thức LocalFileStore() và phương thức CacheBackedEmbeddings() với nhiều đối số:

fs = LocalFileStore ( './cache/' )

cached_embedder=CacheBackedEmbeddings.from_bytes_store (
cơ bản_embeddings, fs, không gian tên =underlying_embeddings.model
)

Chỉ cần lấy danh sách các phần nhúng và hiện tại, danh sách này trống vì các phần nhúng không được lưu trữ trong danh sách:

danh sách ( fs.yield_keys ( ) )

Bước 4: Tạo cửa hàng Vector
Lấy tệp từ hệ thống cục bộ bằng thư viện tệp và nhấp vào nút “ Chọn tập tin ” sau khi thực thi mã:

từ tệp nhập google.colab
đã tải lên = files.upload ( )

Bây giờ, chỉ cần tạo một kho lưu trữ vectơ có thể được sử dụng để lưu trữ các phần nhúng bằng phương thức TextLoader() với tên của tài liệu. Sau đó, áp dụng các phương pháp tách văn bản với kích thước của các đoạn và chia dữ liệu thành các đoạn nhỏ hơn:

raw_documents=Trình tải văn bản ( 'state_of_the_union.txt' ) .trọng tải ( )
text_splitter=Bộ chia văn bản ký tự ( chunk_size = 1000 , chunk_overlap = 0 )
tài liệu = text_split.split_documents ( tài liệu thô )

Sau khi tách văn bản, lưu trữ dữ liệu trong db biến sử dụng thư viện FAISS để lấy đầu ra bằng phương pháp tìm kiếm tương tự:

db = FAISS.from_documents ( tài liệu, cached_embedder )

Bây giờ, hãy lấy lại danh sách các phần nhúng sau khi lưu trữ chúng trong cơ sở dữ liệu và giới hạn đầu ra chỉ ở 5 chỉ mục:

danh sách ( fs.yield_keys ( ) ) [ : 5 ]

Bước 5: Sử dụng bộ nhớ đệm trong bộ nhớ
Bộ nhớ đệm tiếp theo có thể được sử dụng thông qua các phương thức InMemoryStore() để xác định biến lưu trữ:

cửa hàng = InMemoryStore ( )

Xây dựng mô hình bộ đệm bằng cách sử dụng các phương thức OpenAIEmbeddings() và CacheBackedEmbeddings() với mô hình, kho lưu trữ và không gian tên làm tham số:

cơ bản_embeddings=OpenAIEmbeddings ( )
embedder = CacheBackedEmbeddings.from_bytes_store (
cơ bản_embeddings, lưu trữ, không gian tên =underlying_embeddings.model
)

Áp dụng các phần nhúng trên tài liệu được lưu trữ mà không sử dụng các phần nhúng bộ đệm để lấy dữ liệu từ tài liệu:

nhúng = embedder.embed_documents ( [ 'Xin chào' , 'tạm biệt' ] )

Bây giờ, hãy áp dụng bộ đệm cho các phần nhúng để nhanh chóng tìm nạp dữ liệu từ tài liệu:

embeddings_from_cache = embedder.embed_documents ( [ 'Xin chào' , 'tạm biệt' ] )

Lưu trữ các phần nhúng trong bộ đệm vào biến nhúng để biến nhúng có các phần nhúng được lưu trong bộ đệm:

phần nhúng == embeddings_from_cache

Bước 6: Sử dụng bộ nhớ đệm hệ thống tệp
Phương pháp cuối cùng để áp dụng bộ nhớ đệm trong phần nhúng từ tài liệu test_cache bằng Cửa hàng hệ thống tệp:

fs = LocalFileStore ( './test_cache/' )

Áp dụng các phần nhúng bằng phương thức CacheBackedEmbeddings() với mô hình nhúng, kho dữ liệu và không gian tên làm tham số:

embedder2 = CacheBackedEmbeddings.from_bytes_store (
cơ bản_embeddings, fs, không gian tên =underlying_embeddings.model
)

Sử dụng biến embeddings với dữ liệu được lưu trong bộ nhớ đệm để gọi phương thức embedder():

nhúng = embedder2.embed_documents ( [ 'Xin chào' , 'tạm biệt' ] )

Bây giờ hãy lấy phần nhúng cho hai thế giới trên được đề cập dưới dạng tham số:

danh sách ( fs.yield_keys ( ) )

Đó là tất cả về quá trình xây dựng và làm việc với caching trong LangChain.

Phần kết luận

Để làm việc với các kỹ thuật bộ nhớ đệm để nhúng trong LangChain, bạn chỉ cần lấy các mô-đun cần thiết bằng cách sử dụng lệnh pip như FAISS, OpenAI, v.v. Sau đó, nhập các thư viện để xây dựng và làm việc với bộ nhớ đệm trong LangChain. Nó có hiệu quả nhận được các phần nhúng được lưu trữ trong các cửa hàng khác nhau. Nhà phát triển có thể sử dụng nhiều cửa hàng làm cơ sở dữ liệu để lưu trữ các phần nhúng như cửa hàng vectơ, Hệ thống tệp hoặc cửa hàng trong bộ nhớ. Hướng dẫn này trình bày quy trình làm việc với bộ nhớ đệm trong LangChain.