Xây dựng hoạt động tìm kiếm nội dung dựa trên AI thông qua Nhân viên hỗ trợ Google Tài liệu

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 các mô hình tạo sinh trí tuệ nhân tạo (AI). Khi xây dựng một giao diện tìm kiếm dạng trò chuyện cho nội dung của bạn bằng AI, người dùng có thể đặt những câu hỏi cụ thể và nhận câu trả lời trực tiếp.

Hướng dẫn này trình bày cách xây dựng giao diện tìm kiếm trò chuyện dựa trên AI cho nội dung của bạn. Thư viện này dựa trên Tài liệu Agent, một dự án nguồn mở sử dụng API Google Gemini để tạo giao diện tìm kiếm có tính năng trò chuyện mà không cần huấn luyện mô hình AI mới hay điều chỉnh mô hình bằng mô hình Gemini. Điều đó có nghĩa là bạn có thể nhanh chóng xây dựng khả năng tìm kiếm này và sử dụng 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 của đội ngũ xây dựng dự án, hãy xem bài viết: Tìm kiếm nội dung dựa trên AI (trí tuệ nhân tạo) | 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 Tác nhân tài liệu cung cấp giao diện tìm kiếm dạng trò chuyện cho một nhóm nội dung cụ thể, được API Google Gemini và các mô hình tạo sinh hỗ trợ. Người dùng có thể đặt câu hỏi chi tiết theo phong cách trò chuyện và nhận câu trả lời chi tiết dựa trên một nhóm nội dung cụ thể. Ở hậu trường, nhân viên hỗ trợ Tài liệu sẽ đưa câu hỏi và tìm kiếm dựa trên cơ sở dữ liệu vectơ của nội dung, đồng thời tạo một lời nhắc chi tiết cho mô hình tạo sinh, bao gồm cả các đoạn trích của văn bản liên quan. Mô hình tạo sinh này sẽ tạo một câu trả lời cho câu hỏi và Nhân viên hỗ trợ Google Tài liệu sẽ định dạng câu trả lời đó cũng như trình bày cho người dùng.

Sơ đồ chức năng của Tác nhân Google Tài liệu Hình 1. Sơ đồ chức năng của ứng dụng dự án Tác nhân tài liệu.

Chìa khoá để giúp Tác nhân tài liệu có thể trả lời các câu hỏi về nội dung của bạn là việc tạo cơ sở dữ liệu vectơ của nội dung đó. Bạn sẽ tách nội dung của mình thành các phần văn bản logic và tạo một vectơ cho từng phần đó. Các vectơ này là các biểu thị dạng số của thông tin trong từng đoạn và được tạo bằng hàm Nhúng văn bản dựa trên AI từ các mô hình tạo sinh của Google.

Khi người dùng đặt câu hỏi, Nhân viên hỗ trợ 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 liên quan. Phương thức này lấy kết quả hàng đầu và thêm thông tin đó vào câu lệnh cho mô hình tạo sinh. Mô hình AI sẽ lấy câu hỏi và thông tin bổ sung về bối cảnh 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 thiết lập dự án Tác nhân tài liệu để phát triển và kiểm thử. Các bước chung bao gồm cài đặt một số phần mềm tiên quyết, đặt một vài biến môi trường, sao chép 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 điều kiện tiên quyết

Dự án Tác nhân tài liệu 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 yêu cầu:

  1. 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
    
  2. Hãy 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 vài biến môi trường bắt buộc để cho phép chạy dự án mã Tác nhân Tài liệu, bao gồm Khoá API Google Gemini và chế độ cài đặt Thơ bằng Python. 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 chúng làm chế độ cài đặt mặc định cho các phiên hoạt động của thiết bị đầu cuối.

Cách thiết lập các biến môi trường:

  1. Lấy Khoá API Google Gemini và sao chép chuỗi khoá.
  2. Đặt Khoá API làm biến môi trường. Trên máy chủ Linux, hãy dùng lệnh sau.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. Giải quyết vấn đề đã biết đối với Python Poetry bằng cách đặt tham số PYTHON_KEYRING_BACKEND. Trên máy chủ Linux, hãy 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 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:

  1. Sao chép kho lưu trữ git bằng lệnh sau.
    git clone https://github.com/google/generative-ai-docs
    
  2. Bạn có thể tuỳ ý định cấu hình kho lưu trữ git cục bộ để sử dụng quy trình thanh toán thưa thớt, nhờ đó, bạn chỉ có các tệp cho dự án Tác nhân tài liệu.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. Chuyển đến thư mục gốc của dự án docs-agent.
    cd examples/gemini/python/docs-agent/
    
  4. 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 Tác nhân tài liệu được thiết kế để tương thích với nội dung văn bản và có các công cụ dành riêng cho việc làm việc với những 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ữ lại (hoặc sao chép) cấu trúc thư mục của trang web được phân phát để cho phép nhiệm 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 về nội dung của mình, có thể bạn sẽ phải xoá 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 mọi người tìm kiếm được. Bạn nên giữ lại các định dạng cơ bản như tiêu đề và tiêu đề (giúp tạo các đoạn hoặc các phần phân tách văn bản hợp lý) trong bước xử lý nội dung.

Cách chuẩn bị nội dung để xử lý:

  1. Tạo thư mục chứa nội dung mà bạn muốn nhân viên AI tìm kiếm.
    mkdir docs-agent/content/
    
  2. 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 duy trì (hoặc sao chép) cấu trúc thư mục của trang web được phân phát.
  3. Hãy 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 bạn không muốn đưa vào nội dung tìm kiếm.

Sử dụng tài liệu về Flutter để kiểm thử

Nếu cần một bộ nội dung dùng để kiểm thử Tác nhân tài liệu, bạn có thể dùng tài liệu dành cho nhà phát triển của Flutter để kiểm thử.

Cách tải tài liệu dành cho nhà phát triển Flutter:

  1. Chuyển đến thư mục nội dung của nội dung mà bạn muốn tác nhân AI tìm kiếm.
    cd docs-agent/content/
    
  2. Sao chép các 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 có thể 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 xây dựng 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ơ này được tạo bằng hàm mô hình tạo sinh AI có tên là Nhúng văn bản. Nhúng văn bản là các đại diện dạng số của nội dung văn bản. Chúng ước chừng ý nghĩa ngữ nghĩa của văn bản dưới dạng một tập hợp số. Việc biểu diễn thông tin dưới dạng số cho phép hệ thống nhận câu hỏi của người dùng, ước chừng ý 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 rồi tìm thông tin liên quan dưới dạng một phép tính toán học, bằng cách sử dụng thuật toán k-nearest nearbys (k-NN).

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ả sẽ bị giới hạn. Dự án này giới hạn văn bản được biểu diễn trong vectơ ở mức 3.000 ký tự trở xuống, tức là bạn phải chia nội dung của mình thành nhiều phần 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 Tác nhân tài liệu để chia các tệp Markdown thành các đoạn văn bản nhỏ hơn. Để biết mẹo về cách làm việc với 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 phân tách nội dung theo định dạng Markdown:

  1. Đị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 nhóm nhỏ tài liệu về Flutter:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. Lưu các thay đổi vào tệp cấu hình này.
  3. Chuyển đến thư mục dự án docs-agent:
    cd docs-agent/
    
  4. 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 sẽ xử lý nội dung đầu vào và tạo các tệp văn bản đầu ra trong thư mục docs-agent/data, chia tách văn bản dựa trên tiêu đề, tiêu đề và đoạn văn bản liên quan. Quá trình xử lý có thể mất một chút thời gian tùy 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 nhỏ nội dung thành các phần có kích thước phù hợp và có ý nghĩa, bạn có thể điền nội dung của mình 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 Tác nhân Tài liệu 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 Tác nhân tài liệu để điền vào cơ sở dữ liệu vectơ bằng nội dung phân tách của bạn.

Để tạo hoạt động nhúng văn bản và điền vào cơ sở dữ liệu vectơ:

  1. Chuyển đến thư mục dự án docs-agent:
    cd docs-agent/
    
  2. Đ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 vectơ Nhúng văn bản, sau đó lưu đầu ra vào cơ sở dữ liệu vectơ. Quá trình xử lý có thể mất một khoảng thời gian tuỳ thuộc vào dung lượng nội dung của bạn.

Xử lý các định dạng khác

Dự án Tác nhân tài liệu được thiết kế để hoạt động với nội dung trang web ở định dạng Markdown. Tác giả dự án đã tạo 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 cả 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 xây dựng các phương thức bổ sung đó. Kiểm tra kho lưu trữ mã Vấn đềYêu cầu kéo để xem những người tạo các giải pháp tương tự nhau.

Mã khoá bạn cần tạo để hỗ trợ các định dạng nội dung khác là một tập lệ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 văn bản đầu ra cuối cùng phải có định dạng tối thiểu và thông tin không liên quan. Nếu đang sử dụng các định dạng nội dung như HTML hoặc JSON, hãy nhớ loại bỏ càng nhiều định dạng không mang tính thông tin (thẻ, tập lệnh, CSS) càng tốt để không làm sai lệch giá trị của văn bản được nhúng từ các định dạng đó.

Sau khi tạo tập lệnh bộ 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ơ của mình. Để biết thêm thông tin về cách xử lý các tệp cần sử dụng với Tác nhân tài liệu, hãy xem phần Đọc trước quy trình đọc tài liệu của Tác nhân tài liệu.

Kiểm thử ứng dụng

Sau khi bạn điền xong cơ sở dữ liệu vectơ, dự án đã sẵn sàng cho việc kiểm thử. Dự án này cung cấp chức năng đóng gói để cho phép bạn chạy dự án cục bộ.

Cách chạy và kiểm thử giao diện web của dự án:

  1. Chuyển đến thư mục dự án docs-agent:
    cd docs-agent/
    
  2. Chạy tập lệnh chạy ứng dụng web:
    agent chatbot
    
  3. Sử dụng trình duyệt web của bạn, chuyển đến địa chỉ web URL xuất hiện trong đầu ra của tập lệnh khởi chạy rồi 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 phương thức triển khai Tác nhân Google Tài liệu, cụ thể là: biến thể mô hình Gemini với tính năng Truy xuất ngữ nghĩa và Trả lời câu hỏi được phân bổ (AQA). 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 theo ngữ nghĩa cho phép bạn tạo các nội dung nhúng cho nội dung của mình và lưu trữ nội dung đó. Mô hình AQA Gemini đượ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 Truy xuất ngữ nghĩa cùng với mô hình AQA để trả lời câu hỏi về nội dung của mình tất cả trong API Gemini.

Tác nhân Tài liệu cung cấp các lựa 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 phần Tác nhân tài liệu Readme.

Tài nguyên bổ sung

Để biết thêm thông tin về dự án Tác nhân tài liệu, hãy xem kho lưu trữ mã. Nếu bạn cần trợ giúp để xây dựng ứng dụng hoặc đang tìm cộng tác viên nhà phát triển, hãy truy cập vào máy chủ Google Developers Community Discord.

Ứng dụng sản xuất

Nếu bạn định triển khai Tác nhân tài liệu cho nhiều đối tượng, xin lưu ý rằng việc bạn sử dụng API Google Gemini có thể phải tuân theo giới hạn số lượng yêu cầu 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 phát hành chính thức bằng API Gemini như Workspace Agent, hãy tham khảo các dịch vụ của Vertex AI của Google Cloud để tăng khả năng có thể mở rộng và độ tin cậy cho ứng dụng của bạn.