使用文件代理程式建立 AI 內容搜尋

搜尋資訊是最常見的人工 生成式 AI 生成式模型建構對話式搜尋介面 讓使用者能提出特定問題 直接提供答案

本教學課程說明如何建構 AI 技術輔助的對話式搜尋 介面。評估依據 文件代理程式, 使用 Google Gemini API 建立對話的開放原始碼專案 搜尋介面,不必訓練新的 AI 模型或調整模型 Gemini 模型:這代表你能快速建構這項搜尋功能 同時用於小型和大型內容集

觀看專案簡介影片、專案應用方式和深入分析資訊 製作團隊的意見,請參閱: AI 內容搜尋 |運用 Google AI 建構內容。 或者,您也可以按照操作說明開始擴充專案 。

總覽

Docs Agent 專案提供針對特定訊息的對話搜尋介面 結合 Google Gemini API 和生成式模型的 AI 模型使用者可以 以對話風格詢問詳細問題,並取得詳細解答 根據特定內容集 顯示內容Docs Agent 背後 然後比對內容向量資料庫 生成式模型的詳細提示,包括相關文字片段。 生成式模型會生成問題的回應與文件代理程式 設定回應格式,並向使用者顯示。

文件代理程式的功能圖表 圖 1. 文件代理程式專案應用程式的功能圖表。

讓文件代理程式能回答與內容相關的問題,關鍵在於 建立向量資料庫您將內容區隔成 文字區塊的邏輯,然後為每個文字片段產生向量。這些向量 每個區塊中資訊的數值表示法 Google 生成式模型中的 AI「文字嵌入」函式。

當使用者提出問題時,文件代理程式會使用相同的嵌入文字 函數來建立該問題的數值表示法 值搜尋向量資料庫並找出相關內容。囊括頂端 並將這項資訊新增至生成式模型的提示。AI 模型會接收問題和額外的背景資訊, 回答的問題

專案設定

以下操作說明會引導您設定 Docs Agent 專案 一般步驟是安裝一些事前準備工作 設定軟體、設定幾個環境變數,從程式碼中複製專案 並安裝設定程式碼專案會使用 Python Poetry:管理套件和 Python 執行階段環境

安裝必備條件

Docs Agent 專案使用 Python 3 和 Python Poetry 管理套件, 所需的資料下列安裝操作說明適用於 Linux 託管機器

如何安裝必要的軟體:

  1. 安裝 Python 3 和 venvPython 專用虛擬環境套件
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. 安裝 Python Poetry 來管理 專案。
    curl -sSL https://install.python-poetry.org | python3 -
    

如果您擴充了 專案。

設定環境變數

設定幾個啟用文件代理程式程式碼所需的環境變數 要執行的專案,包括 Google Gemini API 金鑰和 Python 詩詞設定。建議在 $HOME/.bashrc 檔案中新增這些變數 如果您使用的是 Linux,請將這些程式的預設設定設為 工作階段。

如要設定環境變數,請按照下列步驟操作:

  1. 取得 Google Gemini API 金鑰並複製金鑰字串。
  2. 將 API 金鑰設為環境變數。在 Linux 主機上,請使用 。
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. 解決已知 問題 ,即可設定 PYTHON_KEYRING_BACKEND 參數。 如果是 Linux 主機,請使用下列指令。
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

複製並設定專案

請下載專案程式碼,並使用 Poetry 安裝指令來下載 必要的依附元件並設定專案您需要具備 git 來源控制軟體來擷取 以及專案原始碼 外部 如要下載並設定專案程式碼:

  1. 使用下列指令複製 git 存放區。
    git clone https://github.com/google/generative-ai-docs
    
  2. 您可以選擇將本機 Git 存放區設為使用稀疏結帳功能。 所以只有文件代理程式專案的檔案。
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. 移至 docs-agent 專案根目錄。
    cd examples/gemini/python/docs-agent/
    
  4. 執行 Poetry 安裝指令來下載依附元件並進行設定 專案:
    poetry install
    

準備內容

Docs Agent 專案旨在處理文字內容 專門與以 Markdown 做為來源格式的網站合作。 如果您有使用網站內容,請保留 (或複製) 放送網站的目錄結構,以便啟用內容處理工作 能夠對應和建立該內容的連結。

視內容的格式和詳細資料而定,您可能需要清理 內容來移除非公開資訊、內部附註或其他資訊 並排除您不希望使用者搜尋的內容建議您保留基本格式,例如 例如標題或標題,有助於建立邏輯文字分割 (即片段) 也就是內容處理步驟

如要準備內容以便處理,請按照下列步驟操作:

  1. 為您希望 AI 代理程式搜尋的內容建立目錄。
    mkdir docs-agent/content/
    
  2. 將內容複製到 docs-agent/content/ 目錄。如果 內容即為網站,保留 (或複製) 其目錄結構的 也就是放送的網站
  3. 視需要清理或編輯內容以移除非公開資訊。 您不希望納入搜尋範圍的其他資訊

使用 Flutter 文件進行測試

如要測試文件代理程式所需的一組內容,可以在 Flutter 架構中使用 進行測試的開發人員說明文件

如何取得 Flutter 開發人員說明文件:

  1. 請移至要讓 AI 代理程式存取的內容目錄 搜尋。
    cd docs-agent/content/
    
  2. 將 Flutter 文件複製到 docs-agent/content/ 目錄。
    git clone --recurse-submodules https://github.com/flutter/website.git
    

處理內容

為了讓搜尋代理程式有效地搜尋與 使用者您需要建立能代表自家業務的向量資料庫 內容。向量是透過以下這個 AI 生成式模型函式所產生: 文字嵌入。文字嵌入是文字的數值表示法 內容。可將文字的語意含義估算為 數字。以數字表示資訊能讓系統 使用同樣的文字嵌入,估算出使用者提出的問題 函數,接著使用 最近的 K 鄰居 (k-NN) 演算法。

分割文字內容

文字嵌入向量可有效傳達的文字量為 受到限制。這項專案將向量表示的文字限制為 3,000 個字元 換句話說,你必須將內容分成多個片段 字元限制。本節說明如何使用 使用文件代理程式專案將 Markdown 檔案分割為較小的文字區塊。如需提示 搭配其他內容格式,詳情請參閱 處理其他格式

,瞭解如何調查及移除這項存取權。

如何分割 Markdown 格式的內容:

  1. 編輯 docs-agent/config.yaml 檔案。這個範例指定了子集 以下部分:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. 儲存您對這個設定檔所做的變更。
  3. 前往 docs-agent 專案目錄:
    cd docs-agent/
    
  4. 執行 agent chunk 指令以分割 Markdown 來源內容:
    agent chunk
    

指令碼會處理輸入內容,並在 docs-agent/data 目錄,根據標題、標題和 相關段落。驗證程序可能需要一些時間才能完成,這取決於 內容。

建立文字嵌入向量

將內容分成適當大小的有意義的區塊後, 可以運用文字嵌入功能,將內容填入向量資料庫 函式。文件代理程式專案使用 Chroma 來儲存文字嵌入向量這些操作說明涵蓋 運用文件代理程式指令碼,將分割內容填入向量資料庫 內容。

如何產生文字嵌入及填入向量資料庫:

  1. 前往 docs-agent 專案目錄:
    cd docs-agent/
    
  2. 使用 agent populate 將內容填入向量資料庫 指令:
    agent populate
    

這個指令碼使用 Google Gemini API 生成 文字嵌入 然後將輸出內容儲存到向量資料庫。處理過程可能需要 可能會因為內容大小而受到影響

處理其他格式

Docs Agent 專案旨在處理 Markdown 中的網站內容 格式。專案作者建立了幾個轉換器指令碼,以便產生 支援 Markdown 格式的其他類型的內容,包括 Google 文件、Portable 格式 文件格式 (PDF) 和 Gmail。進一步瞭解如何使用 請先查看 docs-agent/apps_script 找出原始碼存放區的位置

轉換其他內容格式

您可以在專案中使用其他內容格式,但是 其他方法需要由您或社群成員製作。 檢查程式碼存放區 問題提取要求 協助他們建構類似解決方案

為了支援其他內容格式,您必須建構的關鍵程式碼是分割工具 類似 files_to_plain_text.py 指令碼把目標放在構建輸出類似本體的指令碼或程式。 指令碼請記住,最終的文字輸出內容應採用基本格式, 包含多餘的資訊如果您使用的是 HTML 或 JSON 等內容格式 請務必盡量移除非資訊格式 (標記、 所以不會偏差 提供的圖像嵌入

為內容格式建立分割指令碼後,您應該就能 執行 populate_vector_database.py 填入向量資料庫的指令碼如要進一步瞭解處理程序 要與文件代理程式搭配使用的檔案,請參閱文件代理程式 預先處理 Readme 檔案

測試應用程式

向量資料庫填入完成後,專案已準備就緒 。專案提供封裝函式,方便您執行 以及 Cloud Source Repositories

如要執行及測試專案網頁介面:

  1. 前往 docs-agent 專案目錄:
    cd docs-agent/
    
  2. 執行網頁應用程式啟動指令碼:
    agent chatbot
    
  3. 在網路瀏覽器中,瀏覽至 並測試應用程式。
    * Running on http://your-hostname-here:5000
    
,瞭解如何調查及移除這項存取權。

實踐方式

Gemini API 提供的程式設計工具可取代 文件代理程式實作,特別是語意擷取和歸因 Gemini 模型變化版本的問題回答 (AQA) 版本。您可以使用 Gemini API 的 語意擷取 功能取代獨立的向量資料庫語意擷取功能 可讓您產生嵌入內容,並儲存該內容 AQA Gemini 模型經過調整,適用於 利用提示中提供的來源資料回答問題使用語意 與 AQA 模型一起擷取, 回答問題 讓您的內容全都在 Gemini API 中

Docs Agent 提供使用語意化選項的 擷取 API 功能 (屬於 AQA Gemini 模型,或兩者皆用)。若需更多資訊,請參閲 這個 文件代理程式 Readme

其他資源

如要進一步瞭解文件代理程式專案,請參閱 程式碼存放區。 如需建構應用程式的相關協助,或想尋找開發人員 請參閱 Google Developers 社群 Discord 伺服器

正式版應用程式

如果您打算為大量目標對象部署文件代理程式,請注意, Google Gemini API 可能須遵守頻率限制 使用限制。 如果您考慮使用 Gemini API 建構正式版應用程式,例如: 文件代理程式,結帳 Google Cloud Vertex AI 這些服務來提高應用程式的擴充性和可靠性。