Sử dụng LangChain để tạo hệ thống RAG (tiếp tục)
Tôi vừa quyết định sử dụng LangChain để load mô hình embedding thay vì Hugging Face. Về mặt lí thuyết, các embeddings
kết quả nên giống nhau bất kể thư viện sử dụng để load model vì model huấn luyện trước embedding là giống nhau.
Ban đầu thì, SentenceTransformerEmbeddings được chuyên biệt cho chuyển dạng các sentences, trong khi
HuggingFaceEmbeddings là chung hơn, có khả năng khởi tạo các embeddings cho các đoạn văn hay toàn bộ tài liệu.
Thực sự là, cung cấp bản chất các tài liệu của chúng ta, nó được mong đợi rằng sẽ không có khác nhau khi sử dụng
mỗi thư viện.
Để tóm tắt, nếu bạn load cùng model huấn luyện trước như all-MiniLM-L6-v2, các embeddings thực bạn nhận có thể
giống nhau. Tuy nhiên, các hàm, giao diện và đặc tính thếm cụ thể cung cấp bởi các thư viện (bất kể SentenceTransformer
hay Hugging Face Transformers) có thể ảnh hưởng bạn làm việc như thế nào với các embeddings này.
Chú ý Trong tài liệu hướng dẫn LangChain, chúng nhắc đến cả hai lời gọi như những cái tương đương.
https://python.langchain.com/docs/integrations/text_embedding/sentence_transformers
Với hàm embedding được khởi tạo, bạn có tất cả cần thiết để tạo ChromaDB.
chroma_db = Chroma.from_documents(
texts, embedding_function, persist_directory=’./input’
)
Với thông tin này, Chroma quan tâm đến tổ chức dữ liệu theo một cách như vậy rằng chúng ta có thể truy vấn nó và
giành hiệu quả thông tin phù hợp nhất. Sau tất cả nỗ lực này, thứ cuối cùng chúng ta sẽ muốn là cho nó sẽ là chậm
và thiếu chính xác.
Cho bây giờ, mặc dù quá trình được đi theo đã là hơi khác so với học phần trước, bạn đã đi đến một điểm cái bạn
đã quen thuộc với: Tất cả thông tin là trong CSDL vector, sẵn sàng để được truy vấn.
Quá trình giành thông tin và truyền nó tới model đã thực hiện xong trong học phần trước, nhưng bạn phải thực
hiện 2 bước riêng rẽ: Trước tiên, lấy thông tin, và sau đó sử dụng nó để xây dựng prompt làm giàu cho model.
