Xây dựng ứng dụng thông minh với Pinecone Canopy: Hướng dẫn cho người mới bắt đầu
Khám phá cách dùng Canopy như một framework và ngữ cảnh Retrieval Augmented Generation (RAG) mã nguồn mở được xây dựng trên cơ sở dữ liệu vector Pinecone.
Edo Liberty từng là giám đốc nghiên cứu tại AWS và Yahoo. Trong thời gian đó, ông nhanh chóng nhận ra sức mạnh to lớn của việc kết hợp các mô hình trí tuệ nhân tạo (AI) với tìm kiếm vector để cải thiện đáng kể các ứng dụng như hệ thống gợi ý và bộ lọc thư rác.
Khi dấn sâu vào công việc với các hệ thống tìm kiếm vector tùy chỉnh ở quy mô lớn, ông nhận thấy không có giải pháp đóng gói sẵn cho những người không có nguồn lực kỹ thuật và khoa học dữ liệu như tại AWS và Yahoo. Vì vậy, năm 2019, ông sáng lập Pinecone, và cơ sở dữ liệu vector ra đời.
Mục tiêu của Pinecone là cung cấp hạ tầng lưu trữ và truy xuất thiết yếu để phát triển và vận hành các ứng dụng AI tối tân. Theo Pinecone, nguyên tắc sáng lập của họ là “khiến giải pháp trở nên dễ tiếp cận cho các đội ngũ kỹ thuật mọi quy mô và mức độ chuyên môn AI.”
Kết quả là một dịch vụ dễ dùng, được quản lý toàn diện như Pinecone ngày nay. Bốn năm sau, chúng ta có Pinecone Canopy, một framework sử dụng Retrieval Augmented Generation (RAG) giúp nhà phát triển tạo ứng dụng GenAI một cách nhẹ nhàng.
Trong phần còn lại của hướng dẫn này, chúng ta sẽ đi sâu vào:
Lưu ý RAG là một framework AI tiên tiến do Meta (khi đó là Facebook) AI Research giới thiệu năm 2020. Bằng cách sử dụng dữ liệu động, theo miền, RAG giúp tối ưu đầu ra của các Mô hình Ngôn ngữ Lớn (LLM) mà không cần huấn luyện lại mô hình.
Canopy xử lý tất cả các tác vụ nặng nhọc khi phát triển ứng dụng RAG. Bao gồm quản lý lịch sử trò chuyện, chia khối và nhúng dữ liệu văn bản, tối ưu truy vấn, truy xuất ngữ cảnh (bao gồm kỹ thuật nhắc lệnh), và sinh nội dung tăng cường.
Nhờ vậy, nhà phát triển có thể nhanh chóng và dễ dàng thử nghiệm và tạo ứng dụng RAG bằng Canopy. Theo bài viết công bố tháng 11/2023, “Với Canopy, bạn có thể đưa một ứng dụng RAG sẵn sàng sản xuất vào hoạt động trong chưa đầy một giờ. Và vì được xây dựng và hỗ trợ bởi Pinecone, bạn có được trải nghiệm phát triển và hiệu năng tuyệt vời như cơ sở dữ liệu vector được quản lý toàn phần của chúng tôi.”
Các tính năng cốt lõi và lợi ích của Pinecone Canopy
Đối với nhà phát triển muốn thử nghiệm RAG, Canopy mang đến một giải pháp:
Miễn phí
Người dùng có thể lưu trữ tới 100 nghìn embedding bằng Pinecone mà không mất phí. Con số này tương đương khoảng 15 triệu từ hoặc 30 nghìn trang viết. Ngoài ra, bài viết công bố còn cho biết, “Các tùy chọn miễn phí cho mô hình embedding và LLM sẽ sớm ra mắt.”
Dễ triển khai
Dữ liệu văn bản có thể ở dạng JSONL, Parquet, hoặc văn bản thuần, và Canopy sẽ lo phần còn lại. Lưu ý sau này cũng sẽ bổ sung hỗ trợ PDF. Bất kỳ LLM nào của OpenAI, bao gồm GPT-4 Turbo, đều tương thích với Canopy. Hỗ trợ cho các LLM khác và mô hình embedding, như các mô hình mã nguồn mở nổi tiếng từ Anyscale Endpoints, sẽ sớm được bổ sung. Người dùng muốn có dữ liệu văn bản ở định dạng JSONL có thể chuyển đổi bằng notebook của Pinecone.
Đáng tin cậy ở quy mô lớn
Các ứng dụng GenAI sẵn sàng sản xuất dựa trên cơ sở dữ liệu vector của Pinecone có thể được xây dựng nhanh chóng, chính xác và ổn định.
Mô-đun và có thể mở rộng
Thư viện Canopy có thể được sử dụng để tạo các ứng dụng độc đáo. Người dùng cũng có thể chạy Canopy như một dịch vụ web hoặc ứng dụng qua REST API đơn giản. Nó cũng có thể được thêm vào các ứng dụng OpenAI hiện có bằng cách thay thế Chat Completions API bằng endpoint máy chủ của Canopy.
Tương tác và lặp lại
CLI của Canopy có thể tương tác với dữ liệu văn bản bằng các lệnh đơn giản. Điều này cho phép người dùng dễ dàng so sánh RAG với các quy trình không-RAG để đánh giá tương tác kết quả tăng cường trước khi đưa vào sản xuất.
Thiết lập môi trường Pinecone Canopy của bạn
Bắt đầu với Pinecone Canopy tương đối đơn giản. Trước khi bắt đầu, bạn phải đăng ký gói Standard hoặc Enterprise. Người dùng mới được tặng 100 đô la tín dụng serverless để thử nghiệm và làm quen với công cụ.
OPENAI_API_KEY → Dùng để xác thực với dịch vụ của OpenAI cho embedding và chat API. Tìm tại đây. Lưu ý bạn có thể cần đăng nhập hoặc đăng ký dịch vụ OpenAI trước.
INDEX_NAME → Tên của chỉ mục Pinecone mà Canopy sẽ làm việc – sẽ nói thêm ở phần sau của hướng dẫn.
CANOPY_CONFIG_FILE → Đường dẫn tới tệp cấu hình yaml sẽ được máy chủ Canopy sử dụng. Nếu không cung cấp, cấu hình mặc định sẽ được dùng.
Cách thiết lập biến môi trường – chạy lệnh sau từ terminal của bạn:
Canopy: Ready
Usage: canopy [OPTIONS] COMMAND [ARGS]...
# rest of the help messageĐược hỗ trợ bởi
Giờ bạn đã sẵn sàng bắt đầu dự án Pinecone Canopy đầu tiên.
Dự án Pinecone Canopy đầu tiên của bạn
Tạo một Canopy Index mới
Trong Pinecone, các vector embedding được lưu trữ trong indexes – đây là đơn vị tổ chức cấp cao nhất của dữ liệu vector trên nền tảng. Cụ thể, chúng tiếp nhận và lưu trữ vector, phục vụ truy vấn trên các vector chứa trong đó, và thực hiện các thao tác vector khác trên nội dung của chúng.
Khi dùng Canopy, bạn phải thiết lập một chỉ mục Pinecone mới được cấu hình để hoạt động với Canopy. Thực hiện bằng cách chạy:
Sau khi chạy lệnh đó, hãy làm theo hướng dẫn trên CLI.
Chỉ mục được tạo sẽ có tiền tố canopy--<INDEX_NAME>.
Lưu ý bạn chỉ cần thực hiện quá trình này một lần cho mỗi chỉ mục Canopy muốn tạo.
Chuẩn bị dữ liệu và Upsert
Sau khi tạo chỉ mục, bạn đã sẵn sàng nạp dữ liệu vào chỉ mục Canopy của mình.
Dưới đây là vài ví dụ về các cách thực hiện, tùy thuộc vào dữ liệu của bạn:
canopy upsert /path/to/data_directory
# or
canopy upsert /path/to/data_directory/file.parquet
# or
canopy upsert /path/to/data_directory/file.jsonl
# or
canopy upsert /path/to/directory_of_txt_files/# ...Được hỗ trợ bởi
Theo tài liệu, “Canopy hỗ trợ tệp ở định dạng jsonl, parquet và csv. Ngoài ra, bạn có thể nạp các tệp dữ liệu văn bản thuần ở định dạng .txt. Trong trường hợp này, mỗi tệp sẽ được coi là một tài liệu. Mã tài liệu sẽ là tên tệp, và nguồn sẽ là đường dẫn đầy đủ của tệp.”
Lưu ý việc sử dụng lệnh upsert. Thao tác upsert đơn giản là ghi các bản ghi vào một namespace của chỉ mục. Nếu ID bản ghi đã tồn tại, thì thao tác upsert sẽ ghi đè toàn bộ bản ghi.
Nếu bạn muốn cập nhật, hãy dùng thao tác update để sửa một phần của bản ghi.
Khởi chạy máy chủ Canopy
Máy chủ Canopy sử dụng một REST API để cung cấp các chức năng của mình. Cụ thể, nó cho phép bạn trò chuyện với dữ liệu, tải lên tài liệu, và lấy các tài liệu liên quan cho một truy vấn cụ thể. Bất kỳ ứng dụng chat nào cũng có thể dễ dàng liên kết với endpoint /chat.completion của máy chủ.
...
INFO: Uvicorn running on http://0.0.0.0:8000(Press CTRL+C to quit)Được hỗ trợ bởi
Khi nhận được thông báo đó, bạn đã sẵn sàng sử dụng máy chủ Canopy với bất kỳ ứng dụng chat nào hỗ trợ endpoint /chat.completion.
Hiểu kiến trúc của Canopy
Canopy được đóng gói dưới dạng một dịch vụ web (thông qua Canopy Server) và một thư viện có thể dùng để tạo ứng dụng tùy chỉnh. Thư viện gồm ba thành phần, hay lớp, có thể dùng riêng lẻ hoặc như một gói đầy đủ. Mỗi thành phần phụ trách một phần riêng của quy trình RAG:
Knowledge Base
Dữ liệu được chuẩn bị cho quy trình RAG bằng Knowledge Base. Đầu vào văn bản được tự động chia khối và chuyển thành embedding văn bản trước khi upsert vào cơ sở dữ liệu vector Pinecone.
Context Engine
Phần “truy xuất” của RAG được xử lý bởi context engine. Sử dụng Knowledge Base, Context Engine tìm các tài liệu liên quan nhất từ Pinecone và sắp xếp chúng thành ngữ cảnh để dùng làm prompt cho LLM.
Canopy Chat Engine
Toàn bộ quy trình RAG được triển khai bởi Canopy Chat Engine. Nó hiểu lịch sử trò chuyện trước đó, nhận diện câu hỏi nhiều phần, tạo nhiều truy vấn liên quan từ một prompt và chuyển chúng thành embedding. Khi hoàn tất, người dùng cuối sẽ nhận được câu trả lời có mức liên quan cao bằng cách tận dụng ngữ cảnh được tạo cho LLM thông qua Context Engine.
Tính năng nâng cao và thực hành tốt với Pinecone Canopy
Quản lý bộ dữ liệu lớn
Người dùng Canopy có thể tận dụng Pinecone để mở rộng chỉ mục theo chiều dọc hoặc chiều ngang. Mở rộng dọc (tức Scaling up) cung cấp thêm tài nguyên tính toán, còn mở rộng ngang (tức Scaling out) cung cấp thêm máy để phân phối tải.
Một tính năng nâng cao khác là phân vùng bản ghi trong một chỉ mục thành các namespace. Điều này giới hạn truy vấn và các thao tác khác trong một namespace, nên các yêu cầu khác nhau có thể tìm kiếm các tập con khác nhau của chỉ mục.
Ví dụ, bạn có thể muốn định nghĩa một namespace để lập chỉ mục bài hát theo thể loại và một namespace khác theo năm phát hành. Đây là một hướng dẫn chuyên sâu về cách thực hiện.
Cuối cùng nhưng không kém phần quan trọng là upsert theo lô. Lưu ý thao tác upsert cho phép người dùng ghi một bản ghi vào một namespace. Tuy nhiên, khi bạn upsert lượng dữ liệu lớn hơn, tài liệu hướng dẫn người dùng “upsert bản ghi theo lô 100 mục trở xuống trong nhiều yêu cầu upsert.”
Ví dụ như sau:
# Source: https://docs.pinecone.io/docs/upsert-dataimport random
import itertools
from pinecone import Pinecone
pc = Pinecone(api_key="YOUR_API_KEY")
index = pc.Index("pinecone-index")defchunks(iterable, batch_size=100):"""A helper function to break an iterable into chunks of size batch_size."""
it =iter(iterable)
chunk =tuple(itertools.islice(it, batch_size))while chunk:yield chunk
chunk =tuple(itertools.islice(it, batch_size))
vector_dim =128
vector_count =10000# Example generator that generates many (id, vector) pairs
example_data_generator =map(lambda i:(f'id-{i}',[random.random()for _ inrange(vector_dim)]),range(vector_count))# Upsert data with 100 vectors per upsert requestfor ids_vectors_chunk in chunks(example_data_generator, batch_size=100):
index.upsert(vectors=ids_vectors_chunk)Được hỗ trợ bởi
Tối ưu hiệu năng RAG
Mặc dù LLM là một phát minh tuyệt vời, chúng có một nhược điểm lớn: bịa đặt thông tin. RAG có thể được dùng để tăng tính hữu dụng của chúng bằng cách cung cấp ngữ cảnh thực tế để sử dụng khi trả lời truy vấn.
Một kỹ thuật bạn có thể thử là chia khối (chunking) để tối ưu quy trình RAG về hiệu năng và độ chính xác. Đây là thành phần cơ bản khi phát triển hệ thống RAG, nhưng các framework như Canopy thường trừu tượng hóa quy trình này để người dùng không phải bận tâm. Tuy nhiên, kích thước khối rất quan trọng và bạn nên cân nhắc để cải thiện hiệu năng RAG – xem bài viết blog của Pinecone để học các phương pháp chia khối.
Kết luận
Canopy của Pinecone đơn giản hóa quá trình xây dựng ứng dụng RAG bằng cách xử lý mọi tác vụ nặng nhọc khi phát triển ứng dụng RAG, như quản lý lịch sử trò chuyện, chia khối và nhúng dữ liệu văn bản, tối ưu truy vấn, truy xuất ngữ cảnh (bao gồm kỹ thuật nhắc lệnh), và sinh nội dung tăng cường. Điều này giúp bất kỳ ai muốn xây dựng và thử nghiệm RAG cũng có thể bắt đầu dễ dàng.
Trong hướng dẫn này, chúng ta đã đi qua mọi thứ bạn cần biết để bắt đầu thử nghiệm và tạo ứng dụng RAG. Nhà phát triển Canopy hứa hẹn rằng bạn có thể đưa một ứng dụng RAG sẵn sàng sản xuất vào hoạt động trong chưa đầy một giờ. Hãy tự mình thử.
Khám phá những kiến thức cơ bản về Trí tuệ Nhân tạo (AI), học cách ứng dụng AI một cách hiệu quả trong công việc, và tìm hiểu sâu về các mô hình như ChatGPT để nắm bắt xu hướng phát triển của lĩnh vực AI.
Edo Liberty từng là giám đốc nghiên cứu tại AWS và Yahoo. Trong thời gian đó, ông nhanh chóng nhận ra sức mạnh to lớn của việc kết hợp các mô hình trí tuệ nhân tạo (AI) với tìm kiếm vector để cải thiện đáng kể các ứng dụng như hệ thống gợi ý và bộ lọc thư rác.
Khi dấn sâu vào công việc với các hệ thống tìm kiếm vector tùy chỉnh ở quy mô lớn, ông nhận thấy không có giải pháp đóng gói sẵn cho những người không có nguồn lực kỹ thuật và khoa học dữ liệu như tại AWS và Yahoo. Vì vậy, năm 2019, ông sáng lập Pinecone, và cơ sở dữ liệu vector ra đời.
Mục tiêu của Pinecone là cung cấp hạ tầng lưu trữ và truy xuất thiết yếu để phát triển và vận hành các ứng dụng AI tối tân. Theo Pinecone, nguyên tắc sáng lập của họ là “khiến giải pháp trở nên dễ tiếp cận cho các đội ngũ kỹ thuật mọi quy mô và mức độ chuyên môn AI.”
Kết quả là một dịch vụ dễ dùng, được quản lý toàn diện như Pinecone ngày nay. Bốn năm sau, chúng ta có Pinecone Canopy, một framework sử dụng Retrieval Augmented Generation (RAG) giúp nhà phát triển tạo ứng dụng GenAI một cách nhẹ nhàng.
Trong phần còn lại của hướng dẫn này, chúng ta sẽ đi sâu vào:
Pinecone Canopy là gì?
Phần tài liệu của Canopy mô tả Canopy là “một framework và ngữ cảnh Retrieval Augmented Generation (RAG) mã nguồn mở được xây dựng trên cơ sở dữ liệu vector Pinecone.”
Lưu ý RAG là một framework AI tiên tiến do Meta (khi đó là Facebook) AI Research giới thiệu năm 2020. Bằng cách sử dụng dữ liệu động, theo miền, RAG giúp tối ưu đầu ra của các Mô hình Ngôn ngữ Lớn (LLM) mà không cần huấn luyện lại mô hình.
Canopy xử lý tất cả các tác vụ nặng nhọc khi phát triển ứng dụng RAG. Bao gồm quản lý lịch sử trò chuyện, chia khối và nhúng dữ liệu văn bản, tối ưu truy vấn, truy xuất ngữ cảnh (bao gồm kỹ thuật nhắc lệnh), và sinh nội dung tăng cường.
Nhờ vậy, nhà phát triển có thể nhanh chóng và dễ dàng thử nghiệm và tạo ứng dụng RAG bằng Canopy. Theo bài viết công bố tháng 11/2023, “Với Canopy, bạn có thể đưa một ứng dụng RAG sẵn sàng sản xuất vào hoạt động trong chưa đầy một giờ. Và vì được xây dựng và hỗ trợ bởi Pinecone, bạn có được trải nghiệm phát triển và hiệu năng tuyệt vời như cơ sở dữ liệu vector được quản lý toàn phần của chúng tôi.”
Các tính năng cốt lõi và lợi ích của Pinecone Canopy
Đối với nhà phát triển muốn thử nghiệm RAG, Canopy mang đến một giải pháp:
Miễn phí
Người dùng có thể lưu trữ tới 100 nghìn embedding bằng Pinecone mà không mất phí. Con số này tương đương khoảng 15 triệu từ hoặc 30 nghìn trang viết. Ngoài ra, bài viết công bố còn cho biết, “Các tùy chọn miễn phí cho mô hình embedding và LLM sẽ sớm ra mắt.”
Dễ triển khai
Dữ liệu văn bản có thể ở dạng JSONL, Parquet, hoặc văn bản thuần, và Canopy sẽ lo phần còn lại. Lưu ý sau này cũng sẽ bổ sung hỗ trợ PDF. Bất kỳ LLM nào của OpenAI, bao gồm GPT-4 Turbo, đều tương thích với Canopy. Hỗ trợ cho các LLM khác và mô hình embedding, như các mô hình mã nguồn mở nổi tiếng từ Anyscale Endpoints, sẽ sớm được bổ sung. Người dùng muốn có dữ liệu văn bản ở định dạng JSONL có thể chuyển đổi bằng notebook của Pinecone.
Đáng tin cậy ở quy mô lớn
Các ứng dụng GenAI sẵn sàng sản xuất dựa trên cơ sở dữ liệu vector của Pinecone có thể được xây dựng nhanh chóng, chính xác và ổn định.
Mô-đun và có thể mở rộng
Thư viện Canopy có thể được sử dụng để tạo các ứng dụng độc đáo. Người dùng cũng có thể chạy Canopy như một dịch vụ web hoặc ứng dụng qua REST API đơn giản. Nó cũng có thể được thêm vào các ứng dụng OpenAI hiện có bằng cách thay thế Chat Completions API bằng endpoint máy chủ của Canopy.
Tương tác và lặp lại
CLI của Canopy có thể tương tác với dữ liệu văn bản bằng các lệnh đơn giản. Điều này cho phép người dùng dễ dàng so sánh RAG với các quy trình không-RAG để đánh giá tương tác kết quả tăng cường trước khi đưa vào sản xuất.
Thiết lập môi trường Pinecone Canopy của bạn
Bắt đầu với Pinecone Canopy tương đối đơn giản. Trước khi bắt đầu, bạn phải đăng ký gói Standard hoặc Enterprise. Người dùng mới được tặng 100 đô la tín dụng serverless để thử nghiệm và làm quen với công cụ.
Lưu ý nếu bạn không muốn cung cấp thẻ tín dụng, bạn có thể tạo một chỉ mục dạng pod miễn phí.
Bước 1: Cài đặt gói Canopy
Sau khi đăng ký tài khoản, bạn đã sẵn sàng bắt đầu…
Cài đặt gói Canopy bằng:
Nếu bạn muốn thực hiện việc này trong môi trường ảo, chạy lệnh sau trước khi cài đặt gói:
Lệnh này tạo và kích hoạt một môi trường ảo. Xem hướng dẫn Môi trường ảo trong Python của chúng tôi để tìm hiểu thêm cách chúng hoạt động.
Bước 2: Lấy khóa API
Tiếp theo, bạn phải thiết lập biến môi trường. Để làm điều này, bạn sẽ cần một vài khóa API.
Để tìm
PINECONE_API_KEY, chỉ cần:Các biến môi trường bắt buộc khác bao gồm:
OPENAI_API_KEY→ Dùng để xác thực với dịch vụ của OpenAI cho embedding và chat API. Tìm tại đây. Lưu ý bạn có thể cần đăng nhập hoặc đăng ký dịch vụ OpenAI trước.INDEX_NAME→ Tên của chỉ mục Pinecone mà Canopy sẽ làm việc – sẽ nói thêm ở phần sau của hướng dẫn.CANOPY_CONFIG_FILE→ Đường dẫn tới tệp cấu hình yaml sẽ được máy chủ Canopy sử dụng. Nếu không cung cấp, cấu hình mặc định sẽ được dùng.Cách thiết lập biến môi trường – chạy lệnh sau từ terminal của bạn:
Bước 3: Kiểm tra cài đặt thành công
Nếu bạn đã làm theo đến bước này thì Canopy phải đã được cài đặt trên hệ thống của bạn.
Để chắc chắn, chạy lệnh sau:
Bạn sẽ thấy đầu ra tương tự như:
Giờ bạn đã sẵn sàng bắt đầu dự án Pinecone Canopy đầu tiên.
Dự án Pinecone Canopy đầu tiên của bạn
Tạo một Canopy Index mới
Trong Pinecone, các vector embedding được lưu trữ trong indexes – đây là đơn vị tổ chức cấp cao nhất của dữ liệu vector trên nền tảng. Cụ thể, chúng tiếp nhận và lưu trữ vector, phục vụ truy vấn trên các vector chứa trong đó, và thực hiện các thao tác vector khác trên nội dung của chúng.
Khi dùng Canopy, bạn phải thiết lập một chỉ mục Pinecone mới được cấu hình để hoạt động với Canopy. Thực hiện bằng cách chạy:
Sau khi chạy lệnh đó, hãy làm theo hướng dẫn trên CLI.
Chỉ mục được tạo sẽ có tiền tố
canopy--<INDEX_NAME>.Lưu ý bạn chỉ cần thực hiện quá trình này một lần cho mỗi chỉ mục Canopy muốn tạo.
Chuẩn bị dữ liệu và Upsert
Sau khi tạo chỉ mục, bạn đã sẵn sàng nạp dữ liệu vào chỉ mục Canopy của mình.
Dưới đây là vài ví dụ về các cách thực hiện, tùy thuộc vào dữ liệu của bạn:
Theo tài liệu, “Canopy hỗ trợ tệp ở định dạng
jsonl,parquetvàcsv. Ngoài ra, bạn có thể nạp các tệp dữ liệu văn bản thuần ở định dạng.txt. Trong trường hợp này, mỗi tệp sẽ được coi là một tài liệu. Mã tài liệu sẽ là tên tệp, và nguồn sẽ là đường dẫn đầy đủ của tệp.”Lưu ý việc sử dụng lệnh upsert. Thao tác
upsertđơn giản là ghi các bản ghi vào một namespace của chỉ mục. Nếu ID bản ghi đã tồn tại, thì thao tácupsertsẽ ghi đè toàn bộ bản ghi.Nếu bạn muốn cập nhật, hãy dùng thao tác
updateđể sửa một phần của bản ghi.Khởi chạy máy chủ Canopy
Máy chủ Canopy sử dụng một REST API để cung cấp các chức năng của mình. Cụ thể, nó cho phép bạn trò chuyện với dữ liệu, tải lên tài liệu, và lấy các tài liệu liên quan cho một truy vấn cụ thể. Bất kỳ ứng dụng chat nào cũng có thể dễ dàng liên kết với endpoint
/chat.completioncủa máy chủ.Để khởi chạy máy chủ, chạy:
Bạn sẽ thấy thông báo tiêu chuẩn của Uvicorn:
Khi nhận được thông báo đó, bạn đã sẵn sàng sử dụng máy chủ Canopy với bất kỳ ứng dụng chat nào hỗ trợ endpoint /chat.completion.
Hiểu kiến trúc của Canopy
Canopy được đóng gói dưới dạng một dịch vụ web (thông qua Canopy Server) và một thư viện có thể dùng để tạo ứng dụng tùy chỉnh. Thư viện gồm ba thành phần, hay lớp, có thể dùng riêng lẻ hoặc như một gói đầy đủ. Mỗi thành phần phụ trách một phần riêng của quy trình RAG:
Knowledge Base
Dữ liệu được chuẩn bị cho quy trình RAG bằng Knowledge Base. Đầu vào văn bản được tự động chia khối và chuyển thành embedding văn bản trước khi upsert vào cơ sở dữ liệu vector Pinecone.
Context Engine
Phần “truy xuất” của RAG được xử lý bởi context engine. Sử dụng Knowledge Base, Context Engine tìm các tài liệu liên quan nhất từ Pinecone và sắp xếp chúng thành ngữ cảnh để dùng làm prompt cho LLM.
Canopy Chat Engine
Toàn bộ quy trình RAG được triển khai bởi Canopy Chat Engine. Nó hiểu lịch sử trò chuyện trước đó, nhận diện câu hỏi nhiều phần, tạo nhiều truy vấn liên quan từ một prompt và chuyển chúng thành embedding. Khi hoàn tất, người dùng cuối sẽ nhận được câu trả lời có mức liên quan cao bằng cách tận dụng ngữ cảnh được tạo cho LLM thông qua Context Engine.
Sơ đồ minh họa cách Canopy Chat Engine triển khai toàn bộ quy trình RAG. Nguồn - Introducing Canopy: An easy, free, and flexible RAG framework powered by Pinecone
Tính năng nâng cao và thực hành tốt với Pinecone Canopy
Quản lý bộ dữ liệu lớn
Người dùng Canopy có thể tận dụng Pinecone để mở rộng chỉ mục theo chiều dọc hoặc chiều ngang. Mở rộng dọc (tức Scaling up) cung cấp thêm tài nguyên tính toán, còn mở rộng ngang (tức Scaling out) cung cấp thêm máy để phân phối tải.
Một tính năng nâng cao khác là phân vùng bản ghi trong một chỉ mục thành các namespace. Điều này giới hạn truy vấn và các thao tác khác trong một namespace, nên các yêu cầu khác nhau có thể tìm kiếm các tập con khác nhau của chỉ mục.
Ví dụ, bạn có thể muốn định nghĩa một namespace để lập chỉ mục bài hát theo thể loại và một namespace khác theo năm phát hành. Đây là một hướng dẫn chuyên sâu về cách thực hiện.
Cuối cùng nhưng không kém phần quan trọng là upsert theo lô. Lưu ý thao tác
upsertcho phép người dùng ghi một bản ghi vào một namespace. Tuy nhiên, khi bạn upsert lượng dữ liệu lớn hơn, tài liệu hướng dẫn người dùng “upsert bản ghi theo lô 100 mục trở xuống trong nhiều yêu cầu upsert.”Ví dụ như sau:
Tối ưu hiệu năng RAG
Mặc dù LLM là một phát minh tuyệt vời, chúng có một nhược điểm lớn: bịa đặt thông tin. RAG có thể được dùng để tăng tính hữu dụng của chúng bằng cách cung cấp ngữ cảnh thực tế để sử dụng khi trả lời truy vấn.
Một kỹ thuật bạn có thể thử là chia khối (chunking) để tối ưu quy trình RAG về hiệu năng và độ chính xác. Đây là thành phần cơ bản khi phát triển hệ thống RAG, nhưng các framework như Canopy thường trừu tượng hóa quy trình này để người dùng không phải bận tâm. Tuy nhiên, kích thước khối rất quan trọng và bạn nên cân nhắc để cải thiện hiệu năng RAG – xem bài viết blog của Pinecone để học các phương pháp chia khối.
Kết luận
Canopy của Pinecone đơn giản hóa quá trình xây dựng ứng dụng RAG bằng cách xử lý mọi tác vụ nặng nhọc khi phát triển ứng dụng RAG, như quản lý lịch sử trò chuyện, chia khối và nhúng dữ liệu văn bản, tối ưu truy vấn, truy xuất ngữ cảnh (bao gồm kỹ thuật nhắc lệnh), và sinh nội dung tăng cường. Điều này giúp bất kỳ ai muốn xây dựng và thử nghiệm RAG cũng có thể bắt đầu dễ dàng.
Trong hướng dẫn này, chúng ta đã đi qua mọi thứ bạn cần biết để bắt đầu thử nghiệm và tạo ứng dụng RAG. Nhà phát triển Canopy hứa hẹn rằng bạn có thể đưa một ứng dụng RAG sẵn sàng sản xuất vào hoạt động trong chưa đầy một giờ. Hãy tự mình thử.
Để tiếp tục học, hãy xem: