Tìm kiếm thông tin là một trong những cách sử dụng phổ biến nhất của mô hình tạo sinh trí tuệ nhân tạo (AI). Việc xây dựng giao diện tìm kiếm trò chuyện cho nội dung của bạn bằng AI cho phép người dùng đặt câu hỏi cụ thể và nhận câu trả lời trực tiếp.
Hướng dẫn này cho bạn biết cách tạo giao diện tìm kiếm trò chuyện dựa trên AI cho nội dung của bạn. Dự án này dựa trên Docs Agent, một dự án nguồn mở sử dụng API Google Gemini để tạo giao diện tìm kiếm trò chuyện, mà không cần huấn luyện mô hình AI mới hoặc điều chỉnh mô hình bằng các mô hình Gemini. Điều đó có nghĩa là bạn có thể nhanh chóng xây dựng chức năng tìm kiếm này và sử dụng chức năng này cho các tập hợp nội dung nhỏ và lớn.
Để xem video tổng quan về dự án và cách mở rộng dự án, bao gồm cả thông tin chi tiết từ những người xây dựng dự án, hãy xem: Tìm kiếm nội dung bằng AI | Xây dựng bằng AI của Google. Nếu không, bạn có thể bắt đầu mở rộng dự án theo hướng dẫn bên dưới.
Tổng quan
Dự án Trợ lý tài liệu cung cấp giao diện tìm kiếm trò chuyện cho một nhóm nội dung cụ thể, được hỗ trợ bởi API Google Gemini và các mô hình tạo sinh. Người dùng có thể đặt câu hỏi chi tiết theo kiểu trò chuyện và nhận câu trả lời chi tiết dựa trên một tập hợp nội dung cụ thể. Ở hậu trường, Trợ lý tài liệu sẽ lấy câu hỏi và tìm kiếm trong cơ sở dữ liệu vectơ của nội dung, đồng thời tạo một câu lệnh chi tiết cho mô hình tạo sinh, bao gồm cả các đoạn văn bản có liên quan. Mô hình tạo sinh sẽ tạo câu trả lời cho câu hỏi và Trợ lý Tài liệu sẽ định dạng câu trả lời đó rồi hiển thị cho người dùng.
Hình 1. Sơ đồ chức năng của ứng dụng dự án Docs Agent.
Để Trợ lý Google Tài liệu có thể trả lời các câu hỏi về nội dung của bạn, bạn cần tạo một cơ sở dữ liệu vectơ của nội dung đó. Bạn tách nội dung thành các đoạn văn bản logic và tạo một vectơ cho mỗi đoạn. Các vectơ này là biểu diễn bằng số của thông tin trong mỗi đoạn và được tạo bằng hàm nhúng văn bản AI từ các mô hình tạo sinh của Google.
Khi người dùng đặt câu hỏi, Trợ lý Google Tài liệu sẽ sử dụng cùng một hàm nhúng văn bản để tạo bản trình bày dạng số của câu hỏi đó, đồng thời sử dụng giá trị đó để tìm kiếm cơ sở dữ liệu vectơ và tìm nội dung có liên quan. Công cụ này lấy các kết quả hàng đầu và thêm thông tin đó vào lời nhắc cho mô hình tạo sinh. Mô hình AI sẽ lấy câu hỏi và thông tin ngữ cảnh bổ sung rồi tạo câu trả lời.
Thiết lập dự án
Những hướng dẫn này sẽ hướng dẫn bạn cách thiết lập dự án Docs Agent để phát triển và kiểm thử. Các bước chung là cài đặt một số phần mềm cần thiết, thiết lập một số biến môi trường, nhân bản dự án từ kho lưu trữ mã và chạy quá trình cài đặt cấu hình. Dự án mã này sử dụng Python Poetry để quản lý các gói và môi trường thời gian chạy Python.
Cài đặt các điều kiện tiên quyết
Dự án Docs Agent sử dụng Python 3 và Python Poetry để quản lý các gói và chạy ứng dụng. Hướng dẫn cài đặt sau đây dành cho máy chủ Linux.
Cách cài đặt phần mềm cần thiết:
- Cài đặt Python 3 và gói môi trường ảo
venv
cho Python.
sudo apt update sudo apt install git pip python3-venv
- Cài đặt Python Poetry để quản lý các phần phụ thuộc và đóng gói cho dự án.
curl -sSL https://install.python-poetry.org | python3 -
Bạn có thể sử dụng Python Poetry để thêm các thư viện Python khác nếu mở rộng dự án.
Đặt các biến môi trường
Đặt một số biến môi trường cần thiết để cho phép chạy dự án mã của Tài liệu Agent, bao gồm cả Khoá API Google Gemini và chế độ cài đặt Python Poetry. Bạn nên thêm các biến này vào tệp $HOME/.bashrc
nếu đang sử dụng Linux để đặt các biến này làm chế độ cài đặt mặc định cho các phiên dòng lệnh.
Cách đặt biến môi trường:
- Lấy khoá API Gemini của Google rồi sao chép chuỗi khoá.
- Đặt Khoá API làm biến môi trường. Trên máy chủ Linux, hãy sử dụng lệnh sau.
export API_KEY=<YOUR_API_KEY_HERE>
- Giải quyết vấn đề đã biết cho Python Poetry bằng cách đặt tham số
PYTHON_KEYRING_BACKEND
. Trên máy chủ Linux, hãy sử dụng lệnh sau.
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
Sao chép và định cấu hình dự án
Tải mã dự án xuống và sử dụng lệnh cài đặt Poetry để tải các phần phụ thuộc bắt buộc xuống và định cấu hình dự án. Bạn cần có phần mềm kiểm soát nguồn git để truy xuất mã nguồn dự án bên ngoài. Để tải xuống và định cấu hình mã dự án:
- Sao chép kho lưu trữ git bằng lệnh sau.
git clone https://github.com/google/generative-ai-docs
- Bạn có thể định cấu hình kho lưu trữ git cục bộ để sử dụng tính năng kiểm tra thưa thớt, nhờ đó bạn chỉ có các tệp cho dự án Docs Agent.
cd generative-ai-docs/ git sparse-checkout init --cone git sparse-checkout set examples/gemini/python/docs-agent/
- Chuyển đến thư mục gốc của dự án
docs-agent
.
cd examples/gemini/python/docs-agent/
- Chạy lệnh cài đặt Poetry để tải các phần phụ thuộc xuống và định cấu hình dự án:
poetry install
Chuẩn bị nội dung
Dự án Docs Agent được thiết kế để xử lý nội dung văn bản và bao gồm các công cụ dành riêng cho việc xử lý các trang web sử dụng Markdown làm định dạng nguồn. Nếu đang xử lý nội dung trang web, bạn nên giữ nguyên (hoặc sao chép) cấu trúc thư mục của trang web được phân phát để cho phép tác vụ xử lý nội dung liên kết và tạo đường liên kết đến nội dung đó.
Tuỳ thuộc vào định dạng và thông tin chi tiết của nội dung, bạn có thể cần phải dọn dẹp nội dung để xoá thông tin không công khai, ghi chú nội bộ hoặc thông tin khác mà bạn không muốn người khác tìm thấy. Bạn nên giữ lại định dạng cơ bản như tiêu đề và tiêu đề phụ để tạo các phần văn bản logic hoặc các đoạn văn bản trong bước xử lý nội dung.
Cách chuẩn bị nội dung để xử lý:
- Tạo thư mục cho nội dung mà bạn muốn tác nhân AI tìm kiếm.
mkdir docs-agent/content/
- Sao chép nội dung vào thư mục
docs-agent/content/
. Nếu nội dung là một trang web, hãy giữ nguyên (hoặc sao chép) cấu trúc thư mục của trang web được phân phát. - Xoá hoặc chỉnh sửa nội dung nếu cần để xoá thông tin không công khai hoặc thông tin khác mà bạn không muốn xuất hiện trong kết quả tìm kiếm.
Sử dụng tài liệu Flutter để kiểm thử
Nếu cần một bộ nội dung để kiểm thử Docs Agent, bạn có thể sử dụng tài liệu dành cho nhà phát triển Flutter để kiểm thử.
Cách tải tài liệu dành cho nhà phát triển Flutter:
- Chuyển đến thư mục nội dung cho nội dung bạn muốn tác nhân AI tìm kiếm.
cd docs-agent/content/
- Sao chép tài liệu Flutter vào thư mục
docs-agent/content/
.
git clone --recurse-submodules https://github.com/flutter/website.git
Xử lý nội dung
Để tác nhân tìm kiếm tìm kiếm nội dung liên quan đến câu hỏi của người dùng một cách hiệu quả, bạn cần tạo một cơ sở dữ liệu gồm các vectơ đại diện cho nội dung của mình. Các vectơ được tạo bằng cách sử dụng hàm mô hình tạo sinh AI có tên là nhúng văn bản. Nội dung nhúng văn bản là nội dung đại diện dạng số của nội dung văn bản. Các giá trị này ước tính ý nghĩa ngữ nghĩa của văn bản dưới dạng một tập hợp số. Việc có thông tin biểu diễn bằng số cho phép hệ thống lấy câu hỏi của người dùng, ước tính ý nghĩa của câu hỏi đó bằng cách sử dụng cùng một hàm nhúng văn bản, sau đó tìm thông tin liên quan dưới dạng phép tính toán học bằng cách sử dụng thuật toán k-nearest neighbors (k-NN).
Phân tách nội dung văn bản
Lượng văn bản mà vectơ nhúng văn bản có thể biểu thị hiệu quả là giới hạn. Dự án này giới hạn văn bản được biểu thị trong một vectơ ở mức 3000 ký tự trở xuống, nghĩa là bạn phải chia nội dung thành các phần nhỏ trong giới hạn ký tự đó. Phần này mô tả cách sử dụng tập lệnh được cung cấp cùng với dự án Docs Agent để chia các tệp Markdown thành các đoạn văn bản nhỏ hơn. Để biết các mẹo về cách xử lý các định dạng nội dung khác, hãy xem phần Xử lý các định dạng khác.
Cách tách nội dung định dạng Markdown:
- Định cấu hình các tham số đầu vào cho tập lệnh xử lý bằng cách chỉnh sửa tệp
docs-agent/config.yaml
. Ví dụ này nhắm đến một tập hợp con của tài liệu Flutter:
input: - path: "content/website/src/ui" url_prefix: "https://docs.flutter.dev/ui"
- Lưu các thay đổi vào tệp cấu hình này.
- Chuyển đến thư mục dự án
docs-agent
:
cd docs-agent/
- Phân tách nội dung nguồn Markdown bằng cách chạy lệnh
agent chunk
:
agent chunk
Tập lệnh này xử lý nội dung đầu vào và tạo tệp văn bản đầu ra trong thư mục docs-agent/data
, phân tách văn bản dựa trên tiêu đề, tiêu đề phụ và các đoạn văn bản có liên quan. Quá trình xử lý có thể mất chút thời gian, tuỳ thuộc vào kích thước nội dung của bạn.
Tạo vectơ nhúng văn bản
Sau khi chia nội dung thành các đoạn có ý nghĩa và có kích thước phù hợp, bạn có thể điền nội dung vào cơ sở dữ liệu vectơ bằng cách sử dụng hàm nhúng văn bản. Dự án Docs Agent sử dụng cơ sở dữ liệu vectơ Chroma để lưu trữ các vectơ nhúng văn bản. Những hướng dẫn này trình bày cách sử dụng tập lệnh của Trình đại diện tài liệu để điền nội dung phân tách vào cơ sở dữ liệu vectơ.
Cách tạo văn bản nhúng và điền cơ sở dữ liệu vectơ:
- Chuyển đến thư mục dự án
docs-agent
:
cd docs-agent/
- Điền nội dung của bạn vào cơ sở dữ liệu vectơ bằng lệnh
agent populate
:
agent populate
Tập lệnh này sử dụng API Google Gemini để tạo các vectơ nhúng văn bản, sau đó lưu kết quả vào cơ sở dữ liệu vectơ. Quá trình xử lý có thể mất một chút thời gian, tuỳ thuộc vào kích thước nội dung của bạn.
Xử lý các định dạng khác
Dự án Docs Agent được thiết kế để hoạt động với nội dung trang web ở định dạng Markdown. Các tác giả dự án đã xây dựng một số tập lệnh chuyển đổi để tạo các loại nội dung khác thành định dạng Markdown, bao gồm Google Tài liệu, Định dạng tài liệu di động (PDF) và Gmail. Để biết thêm thông tin về cách sử dụng các trình chuyển đổi này, hãy xem thư mục docs-agent/apps_script của kho lưu trữ mã.
Chuyển đổi các định dạng nội dung khác
Bạn có thể sử dụng các định dạng nội dung khác với dự án, tuy nhiên, bạn hoặc các thành viên khác trong cộng đồng cần phải xây dựng các phương thức bổ sung đó. Kiểm tra Vấn đề và Yêu cầu kéo trong kho lưu trữ mã để tìm những người đang xây dựng các giải pháp tương tự.
Mã chính bạn cần tạo để hỗ trợ các định dạng nội dung khác là tập lệnh trình phân tách như tập lệnh files_to_plain_text.py
. Hãy cố gắng tạo một tập lệnh hoặc chương trình tạo ra kết quả tương tự như tập lệnh này. Hãy nhớ rằng kết quả văn bản cuối cùng phải có định dạng và thông tin thừa ở mức tối thiểu. Nếu bạn đang sử dụng các định dạng nội dung như HTML hoặc JSON, hãy đảm bảo bạn loại bỏ càng nhiều định dạng không phải thông tin (thẻ, tập lệnh, CSS) càng tốt để định dạng đó không làm sai lệch giá trị của các văn bản nhúng mà bạn tạo từ các định dạng đó.
Sau khi tạo tập lệnh trình phân tách cho định dạng nội dung, bạn có thể chạy tập lệnh populate_vector_database.py
để điền cơ sở dữ liệu vectơ. Để biết thêm thông tin về cách xử lý tệp để sử dụng với Trình đại diện tài liệu, hãy xem phần Trước khi xử lý tệp Readme của Trình đại diện tài liệu.
Kiểm thử ứng dụng
Khi bạn đã điền xong cơ sở dữ liệu vectơ, dự án đã sẵn sàng để kiểm thử. Dự án cung cấp một hàm đóng gói để cho phép bạn chạy dự án trên máy.
Cách chạy và kiểm thử giao diện web của dự án:
- Chuyển đến thư mục dự án
docs-agent
:
cd docs-agent/
- Chạy tập lệnh khởi chạy ứng dụng web:
agent chatbot
- Sử dụng trình duyệt web, hãy chuyển đến địa chỉ web URL hiển thị trong kết quả của tập lệnh khởi chạy và kiểm thử ứng dụng.
* Running on http://your-hostname-here:5000
Các cách triển khai
API Gemini cung cấp các công cụ lập trình có thể thay thế các thành phần của quá trình triển khai Trợ lý tài liệu, cụ thể là: biến thể mô hình Gemini Trả lời câu hỏi được phân bổ (AQA) và Truy xuất ngữ nghĩa. Bạn có thể sử dụng tính năng Truy xuất ngữ nghĩa của API Gemini để thay thế cơ sở dữ liệu vectơ riêng biệt. Tính năng Truy xuất ngữ nghĩa cho phép bạn tạo nội dung nhúng cho nội dung của mình và lưu trữ nội dung đó. Mô hình Gemini AQA được điều chỉnh để trả lời các câu hỏi bằng tài liệu nguồn được cung cấp trong câu lệnh. Bạn sử dụng tính năng Truy xuất ngữ nghĩa cùng với mô hình AQA để trả lời các câu hỏi về nội dung của mình trong API Gemini.
Tác nhân tài liệu bao gồm các tuỳ chọn cấu hình để sử dụng tính năng API Truy xuất ngữ nghĩa, mô hình AQA Gemini hoặc cả hai. Để biết thêm thông tin, hãy xem Tệp Readme của Trình đọc tài liệu.
Tài nguyên khác
Để biết thêm thông tin về dự án Docs Agent, hãy xem kho lưu trữ mã. Nếu bạn cần được trợ giúp để xây dựng ứng dụng hoặc đang tìm kiếm cộng tác viên là nhà phát triển, hãy tham khảo máy chủ Discord của Cộng đồng nhà phát triển Google.
Ứng dụng phát hành công khai
Nếu bạn dự định triển khai Trợ lý Tài liệu cho một lượng lớn đối tượng, hãy lưu ý rằng việc sử dụng API Google Gemini của bạn có thể phải tuân theo giới hạn tốc độ và các hạn chế sử dụng khác. Nếu bạn đang cân nhắc xây dựng một ứng dụng chính thức bằng API Gemini như Agent Docs, hãy xem các dịch vụ Google Cloud Vertex AI để tăng khả năng mở rộng và độ tin cậy của ứng dụng.