
Engram: Bộ nhớ của Weaviate
Nếu bạn muốn tìm hiểu thêm về Engram, hãy đăng ký xem trước ngay hôm nay. Vì các ứng dụng tác nhân đã chuyển từ các tính năng thử nghiệm sang các trường hợp sử dụng sản xuất nên rõ ràng là chúng hiệu quả nhất khi được tích hợp hoàn toàn vào phần còn lại của hệ thống, được cá nhân hóa mạnh mẽ cho người dùng và có thể liên tục học hỏi để hoàn thiện hơn theo thời gian. Các tác nhân này cần bộ nhớ, được thiết kế dưới dạng cơ sở hạ tầng mạnh mẽ và có thể dự đoán được chứ không phải là một giải pháp đặc biệt. Đó là lý do tại sao chúng tôi xây dựng Engram, một dịch vụ bộ nhớ được quản lý chạy trên Weaviate, tập trung vào việc giúp bạn dễ dàng bắt đầu
Nếu bạn muốn tìm hiểu thêm về Engram, hãy đăng ký xem trước ngay hôm nay.
Vì các ứng dụng tác nhân đã chuyển từ các tính năng thử nghiệm sang các trường hợp sử dụng sản xuất nên rõ ràng là chúng hiệu quả nhất khi được tích hợp hoàn toàn vào phần còn lại của hệ thống, được cá nhân hóa mạnh mẽ cho người dùng và có thể liên tục học hỏi để hoàn thiện hơn theo thời gian. Các tác nhân này cần bộ nhớ, được thiết kế dưới dạng cơ sở hạ tầng mạnh mẽ và có thể dự đoán được chứ không phải là một giải pháp đặc biệt. Đó là lý do tại sao chúng tôi xây dựng Engram, một dịch vụ bộ nhớ được quản lý chạy trên Weaviate, tập trung vào việc dễ dàng bắt đầu nhưng đủ linh hoạt để thích ứng với mọi trường hợp sử dụng.
Ký ức là gì?
Sẽ rất khó chịu khi chatbot quên tùy chọn của bạn. Tuy nhiên, như chúng ta đã thảo luận trong Giới hạn trong vòng lặp, vấn đề có thể trở nên tồi tệ hơn nhiều đối với các tác nhân thực hiện các nhiệm vụ phức tạp và kéo dài. Nếu không có tính liên tục của bộ nhớ, các tác nhân không thể học hỏi từ kinh nghiệm trong quá khứ, bị mắc kẹt trong một chu kỳ liên tục giải quyết các vấn đề trung gian giống nhau nhiều lần trước khi mất đi những hiểu biết sâu sắc đó, lãng phí cả thời gian và mã thông báo trong quá trình này.
Mặc dù các cửa sổ ngữ cảnh dài của các mô hình biên có vẻ như là một giải pháp cho vấn đề này, nhưng việc nhồi nhét chúng đầy rẫy hiếm khi là cách tiếp cận tốt nhất. Người ta biết rằng LLM bị lạc giữa chừng và độ dài ngữ cảnh hiệu quả vẫn thấp hơn nhiều so với 100% (ví dụ: tại đây và tại đây). Ngữ cảnh quá dài không chỉ làm giảm độ chính xác mà còn làm tăng độ trễ của câu trả lời và tăng chi phí cho các yêu cầu. Những chi phí này phải được thanh toán cho mỗi tin nhắn mới vì toàn bộ lịch sử hội thoại được chuyển lại cho LLM.
Việc lưu trữ từng tin nhắn của mỗi cuộc trò chuyện để truy xuất sẽ giải quyết các vấn đề về độ trễ và chi phí nhưng cũng có những nhược điểm khác. Các cuộc trò chuyện thô sơ với người dùng thực thường ồn ào, mâu thuẫn và bao gồm các sự kiện thay đổi theo thời gian. Việc dựa vào LLM để giải quyết tất cả những mâu thuẫn này cùng một lúc khó hơn là thực hiện dần dần. Điều này không chỉ có nguy cơ dẫn đến sự không nhất quán theo thời gian mà còn là công việc không thể được sử dụng lại vào lần tiếp theo khi những dữ kiện đó có liên quan. Việc coi tất cả bộ nhớ là một cuộc hội thoại cũng không thể thích ứng với các trường hợp sử dụng nâng cao hơn, chẳng hạn như hệ thống đa tác nhân, có thể phân tán một yêu cầu logic duy nhất trên nhiều cửa sổ ngữ cảnh.
Giải pháp tốt nhất cho những vấn đề này là không coi ký ức như một đống bối cảnh ngày càng dày đặc mà thay vào đó hãy tích cực duy trì chúng.
Engram
Engram là dịch vụ bộ nhớ được quản lý của chúng tôi, được xây dựng trên cơ sở dữ liệu vectơ Weaviate. Nó được thiết kế xung quanh các quy trình không đồng bộ chạy khi bạn thêm dữ liệu thô, trích xuất bộ nhớ, đối chiếu thông tin mới và hiện có, đồng thời duy trì Weaviate sẵn sàng truy vấn.
Engram đã được thiết kế đơn giản nhất có thể để bắt đầu, cung cấp các mẫu khởi đầu cho các trường hợp sử dụng bộ nhớ thông thường. Tuy nhiên, bên dưới đây là một hệ thống có tính linh hoạt cao và có thể cấu hình được, có thể thích ứng với nhiều lĩnh vực và trường hợp sử dụng khác nhau. Các tùy chỉnh trải dài từ các mô tả ngôn ngữ tự nhiên đơn giản về những chủ đề mà trường hợp sử dụng của bạn quan tâm, cho đến kiểm soát hoàn toàn các bước riêng lẻ trong quy trình. Khi nhu cầu về bộ nhớ tác nhân của bạn tăng lên, khả năng thích ứng của Engram có nghĩa là bạn sẽ không gặp khó khăn khi đưa thiết kế bộ nhớ mang tính quy định và ràng buộc vào ứng dụng của mình.
Bắt đầu với Engram
Sau khi tạo khóa API dự án Engram, bạn có thể dễ dàng bắt đầu thêm dữ liệu vào Engram cho một trong những người dùng của mình bằng cách sử dụng API REST hoặc ứng dụng khách Python của chúng tôi:
run = client.memories.add(
[
{"role": "user", "content": "Tôi rất quan tâm đến vectơ, vui lòng cho tôi biết thêm!"},
{"role": "trợ lý", "nội dung": "Chắc chắn rồi! Các vectơ thật hấp dẫn..."},
],
user_id="user_name"
)
Kết quả của cuộc gọi này, Engram sẽ bắt đầu chạy quy trình mới để trích xuất các ký ức từ dữ liệu phù hợp với các chủ đề đã định cấu hình của bạn và tích hợp chúng vào các ký ức hiện có của bạn. Ví dụ: lệnh gọi này có thể dẫn đến một bộ nhớ mới mô tả chi tiết tình yêu của người dùng đối với vectơ. Tuy nhiên, nếu họ đã chia sẻ tình yêu đó trong cuộc trò chuyện trước đó, Engram sẽ bỏ qua điều này để tránh tạo ra những ký ức trùng lặp.
Vì các quy trình chạy không đồng bộ trong Engram nên yêu cầu này có độ trễ rất thấp. Thay vì bị buộc phải chờ đợi những thay đổi cuối cùng đối với ký ức của bạn từ lần chạy này (hoặc phải tự mình quản lý việc chạy nó như một tác vụ nền), bạn có thể chỉ cần kích hoạt và quên dữ liệu thô của mình và dựa vào Engram để ghi nhớ những gì cần thiết.
Tất nhiên, nếu bạn muốn theo dõi trạng thái của lần chạy này và hiểu kết quả của những thay đổi nào đã được thực hiện đối với bộ nhớ của mình, bạn có thể truy vấn Engram bằng ID lần chạy được client.memories.add trả về. Tuy nhiên, vì có ít giá trị hơn trong việc truy vấn bộ nhớ đối với các thư gần đây nhất trong ngữ cảnh, nên mẫu không đồng bộ này tự nhiên sẽ khiến bạn tích hợp Engram vào ứng dụng của mình một cách đơn giản và có độ trễ thấp.
Sau đó, bạn có thể truy xuất các ký ức liên quan từ Engram bằng cách sử dụng tìm kiếm ngữ nghĩa, được hỗ trợ bởi chỉ mục vectơ của Weaviate:
ký ức = client.memories.search(
"Gần đây người dùng đã hỏi về công nghệ gì?",
user_id="user_name"
)
Mặc dù đó là tất cả những gì bạn cần để bắt đầu sử dụng Engram nhằm cung cấp bộ nhớ cho tổng đài viên của mình, nhưng nó đã được thiết kế để trở nên linh hoạt, vì vậy hãy cùng tìm hiểu những gì đang diễn ra đằng sau API đơn giản này!
Tổ chức kỷ niệm
Khi Engram trích xuất các ký ức từ dữ liệu thô của bạn, nó sẽ tự động sắp xếp chúng thành một trong các chủ đề được định cấu hình trước của bạn. Chủ đề là những mô tả bằng ngôn ngữ tự nhiên về những thông tin mà LLM nên trích xuất và cách phân loại thông tin đó. Hãy coi chúng như “nam châm thu hút ký ức”, kéo thông tin phù hợp ra khỏi dữ liệu thô. Ký ức sẽ chỉ được trích xuất từ dữ liệu thô nếu chúng khớp với một trong các chủ đề của bạn, giúp bạn kiểm soát loại thông tin nào phù hợp với miền và trường hợp sử dụng cụ thể của mình. Mỗi mẫu mặc định có sẵn trong Engram đều có chủ đề được định cấu hình sẵn nhưng tất cả đều có thể tùy chỉnh hoàn toàn. Điều chỉnh các chủ đề này là cách hiệu quả nhất để bạn kiểm soát nội dung




Nguồn tin: Weaviate Blog. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.