Tin ngành
Timescale Vector tích hợp LangChain: Biến PostgreSQL thành cơ sở dữ liệu vector tối ưu cho AI
(giờ Việt Nam)
Tóm tắt AI
Sự kết hợp giữa Timescale Vector và LangChain giúp tăng tốc độ tìm kiếm tương đồng lên 243% trên nền tảng PostgreSQL, hỗ trợ truy xuất RAG theo thời gian thực mà vẫn giữ được sự đơn giản vốn có.
Bản dịch AI

Lời người biên tập: Bài viết này được thực hiện với sự hợp tác của đội ngũ Timescale Vector. Việc tích hợp của họ với LangChain hỗ trợ PostgreSQL làm cơ sở dữ liệu vector cho bạn, giúp tăng tốc tìm kiếm tương đồng, truy xuất ngữ cảnh dựa trên thời gian cho RAG và các khả năng tự truy vấn. Họ cũng đang cung cấp chương trình dùng thử miễn phí 90 ngày!
Giới thiệu tích hợp Timescale Vector cho LangChain. Timescale Vector cho phép các nhà phát triển LangChain xây dựng các ứng dụng AI tốt hơn với PostgreSQL làm cơ sở dữ liệu vector: với khả năng tìm kiếm tương đồng vector nhanh hơn, lọc tìm kiếm dựa trên thời gian hiệu quả và sự đơn giản trong vận hành của một cơ sở dữ liệu PostgreSQL đám mây duy nhất, dễ sử dụng, không chỉ cho các vector embedding mà còn cho cả dữ liệu quan hệ và dữ liệu chuỗi thời gian của ứng dụng AI.
PostgreSQL là cơ sở dữ liệu được yêu thích nhất thế giới, theo Khảo sát Nhà phát triển Stack Overflow năm 2023. Và điều đó hoàn toàn có lý do: nó đã được tôi luyện qua thực tế sử dụng trong hơn ba thập kỷ, mạnh mẽ, đáng tin cậy và sở hữu một hệ sinh thái phong phú gồm các công cụ, trình điều khiển và trình kết nối.
Mặc dù pgvector, tiện ích mở rộng mã nguồn mở cho dữ liệu vector trên PostgreSQL, là một tiện ích tuyệt vời (và được cung cấp như một phần của Timescale Vector), nhưng nó chỉ là một mảnh ghép trong việc cung cấp trải nghiệm cấp sản xuất cho các nhà phát triển ứng dụng AI trên PostgreSQL. Sau khi trao đổi với nhiều nhà phát triển tại các startup linh hoạt và các tập đoàn lớn trong ngành, chúng tôi nhận thấy cần phải cải tiến pgvector để đáp ứng các nhu cầu về hiệu suất và vận hành của các nhà phát triển đang xây dựng ứng dụng AI.
Dưới đây là tóm tắt (TL;DR) về cách Timescale Vector giúp bạn xây dựng các ứng dụng AI tốt hơn với LangChain:
Ngoài những đổi mới cho khối lượng công việc vector, Timescale Vector còn cung cấp một nền tảng PostgreSQL mạnh mẽ, sẵn sàng cho sản xuất với mức giá linh hoạt, bảo mật cấp doanh nghiệp và hỗ trợ chuyên gia miễn phí.
Trong phần còn lại của bài viết này, chúng ta sẽ đi sâu hơn (kèm mã nguồn!) vào các khả năng độc đáo mà Timescale Vector mang lại cho các nhà phát triển muốn sử dụng PostgreSQL làm cơ sở dữ liệu vector với LangChain:
(Nếu bạn muốn xem ngay mã nguồn, hãy khám phá hướng dẫn này).
🎉 Người dùng LangChain nhận 3 tháng sử dụng Timescale Vector miễn phí
Timescale đang dành tặng người dùng LangChain chương trình dùng thử mở rộng 90 ngày cho Timescale Vector. Điều này giúp bạn dễ dàng kiểm thử và phát triển ứng dụng của mình với Timescale Vector, vì bạn sẽ không bị tính phí cho bất kỳ cơ sở dữ liệu PostgreSQL đám mây nào mà bạn khởi tạo trong thời gian dùng thử. Hãy dùng thử Timescale Vector miễn phí ngay hôm nay.
Tìm kiếm tương đồng vector nhanh hơn trong PostgreSQL
Timescale Vector tăng tốc tìm kiếm Approximate Nearest Neighbor (ANN) trên các tập dữ liệu vector quy mô lớn, cải tiến pgvector bằng chỉ mục ANN tiên tiến lấy cảm hứng từ thuật toán DiskANN. Timescale Vector cũng cung cấp các thuật toán lập chỉ mục HNSW và IVFFlat của pgvector, mang lại cho nhà phát triển sự linh hoạt để chọn chỉ mục phù hợp cho trường hợp sử dụng của họ.
Các bài kiểm tra hiệu suất của chúng tôi sử dụng bộ công cụ ANN benchmarks cho thấy Timescale Vector đạt tốc độ tìm kiếm nhanh hơn từ 39,43% đến 1.590,33% ở mức recall ~99% so với tất cả các chỉ mục tìm kiếm PostgreSQL hiện có và nhanh hơn 243,77% so với các cơ sở dữ liệu vector chuyên dụng như Weaviate, trên tập dữ liệu gồm một triệu OpenAI embedding. Bạn có thể đọc thêm về phương pháp luận và kết quả kiểm tra hiệu suất tại đây.
Chú thích: Chỉ mục mới của Timescale Vector vượt trội hơn cơ sở dữ liệu vector chuyên dụng Weaviate 243% và tất cả các loại chỉ mục PostgreSQL hiện có khi thực hiện tìm kiếm láng giềng gần đúng ở mức recall 99% trên 1 triệu OpenAI embedding.
Việc sử dụng các chỉ mục DiskANN, HNSW hoặc IVFFLAT của Timescale Vector trong LangChain cực kỳ đơn giản.
Chỉ cần tạo một kho lưu trữ vector Timescale Vector như hiển thị bên dưới:
from langchain.vectorstores.timescalevector import TimescaleVector# Tạo một instance Timescale Vector từ tập hợp các tài liệu db = TimescaleVector.from_documents( embedding=embeddings, documents=docs, collection_name=COLLECTION_NAME, service_url=SERVICE_URL,)
# Tạo một instance Timescale Vector từ tập hợp các tài liệu db = TimescaleVector.from_documents( embedding=embeddings, documents=docs, collection_name=COLLECTION_NAME, service_url=SERVICE_URL,)
Và sau đó chạy:
# tạo một chỉ mục# theo mặc định, lệnh này sẽ tạo một chỉ mục Timescale Vector (DiskANN)db.create_index
Lệnh này sẽ tạo một chỉ mục timescale-vector với các tham số mặc định.
Chúng tôi cần lưu ý rằng thuật ngữ "index" (chỉ mục) hơi bị lạm dụng. Đối với nhiều cơ sở dữ liệu vector, chỉ mục là thứ lưu trữ dữ liệu của bạn (trong cơ sở dữ liệu quan hệ, đây thường được gọi là bảng), nhưng trong thế giới PostgreSQL, chỉ mục là thứ giúp tăng tốc tìm kiếm, và chúng tôi đang sử dụng nghĩa thứ hai ở đây.
Chúng ta cũng có thể chỉ định chính xác các tham số để tạo chỉ mục trong lệnh `create_index` như sau:
# tạo một chỉ mục timescale vector (DiskANN) với các tham số đã chỉ địnhdb.create_index(index_type="tsv", max_alpha=1.0, num_neighbors=50)
Những ưu điểm của chỉ mục tìm kiếm vector lấy cảm hứng từ DiskANN mới này của Timescale Vector bao gồm:
Để biết thêm về DiskANN và cách chỉ mục mới của Timescale Vector hoạt động, hãy xem bài đăng trên blog này.
Pgvector được đóng gói như một phần của Timescale Vector, vì vậy bạn cũng có thể truy cập các thuật toán lập chỉ mục HNSW và IVFFLAT của pgvector trong các ứng dụng LangChain của mình. Khả năng tạo chỉ mục cơ sở dữ liệu thuận tiện từ mã nguồn ứng dụng LangChain giúp bạn dễ dàng tạo các chỉ mục khác nhau và so sánh hiệu suất của chúng.
# Tạo một chỉ mục HNSW. # Lưu ý: bạn không cần chỉ định các tham số m và ef_construction vì chúng tôi đã đặt các giá trị mặc định thông minh. db.create_index(index_type="hnsw", m=16, ef_construction=64)# Tạo một chỉ mục IVFFLAT # Lưu ý: bạn không cần chỉ định các tham số num_lists và num_records vì chúng tôi đã đặt các giá trị mặc định thông minh.db.create_index(index_type="ivfflat", num_lists=20, num_records=1000)
# Tạo một chỉ mục IVFFLAT # Lưu ý: bạn không cần chỉ định các tham số num_lists và num_records vì chúng tôi đã đặt các giá trị mặc định thông minh.db.create_index(index_type="ivfflat", num_lists=20, num_records=1000)
Thêm chức năng tìm kiếm dựa trên thời gian hiệu quả vào ứng dụng AI LangChain của bạn
Timescale Vector tối ưu hóa tìm kiếm vector dựa trên thời gian, tận dụng tính năng phân vùng và lập chỉ mục tự động dựa trên thời gian của các hypertables trong Timescale để tìm kiếm vector hiệu quả theo thời gian và sự tương đồng.
Thời gian thường là một thành phần siêu dữ liệu quan trọng đối với các vector embedding. Các nguồn embedding, như tài liệu, hình ảnh và trang web, thường có dấu thời gian đi kèm, ví dụ: ngày tạo, ngày xuất bản hoặc ngày cập nhật lần cuối, v.v.
Chúng ta có thể tận dụng siêu dữ liệu thời gian này trong các bộ sưu tập vector embedding để làm phong phú chất lượng và khả năng áp dụng của kết quả tìm kiếm bằng cách truy xuất các vector không chỉ tương đồng về ngữ nghĩa mà còn phù hợp với một khung thời gian cụ thể.
Dưới đây là một số ví dụ về việc truy xuất vector dựa trên thời gian có thể cải thiện ứng dụng LangChain của bạn như thế nào:
Hãy xem một ví dụ về việc thực hiện tìm kiếm dựa trên thời gian trên tập dữ liệu git log. Trong git log, mỗi mục nhập đều có dấu thời gian, tác giả và một số thông tin về commit.
Để minh họa cách sử dụng chức năng tìm kiếm vector dựa trên thời gian của TimescaleVector, chúng ta sẽ đặt câu hỏi về lịch sử git log của TimescaleDB. Mỗi mục nhập git commit đều có dấu thời gian đi kèm, cũng như thông báo và các siêu dữ liệu khác (ví dụ: tác giả).
Tải văn bản và trích xuất siêu dữ liệu
Đầu tiên, chúng ta tải git log bằng JSON Loader của LangChain.
# Tải dữ liệu từ tệp JSON và trích xuất siêu dữ liệuloader = JSONLoader( file_path=FILE_PATH, jq_schema='.commit_history[]', text_content=False, metadata_func=extract_metadata)documents = loader.load




Bài viết được AI dịch và tổng hợp tự động từ LangChain: Blog. Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.