Tworzenie wyszukiwania treści AI za pomocą agenta Dokumentów

Wyszukiwanie informacji jest jednym z najczęstszych zastosowań modeli generatywnej sztucznej inteligencji (AI). Utworzenie interfejsu wyszukiwania konwersacyjnego dla treści za pomocą AI pozwala użytkownikom zadawać konkretne pytania i otrzymywać bezpośrednie odpowiedzi.

W tym samouczku pokazujemy, jak tworzyć konwersacyjny interfejs wyszukiwania oparty na AI do swoich treści. Jest on oparty na Dokumentach Agent, projekcie open source, który wykorzystuje interfejs wyszukiwania z elementami konwersacyjnymi do tworzenia interfejsu wyszukiwania z elementami konwersacyjnymi, bez konieczności trenowania nowego modelu AI ani dostosowywania modelu za pomocą modeli Gemini. Oznacza to, że możesz szybko stworzyć tę funkcję wyszukiwania i używać jej w przypadku małych i dużych zbiorów treści.

Filmowy przegląd projektu i jego rozszerzania, w tym z opiniami osób, które go stworzyły: Wyszukiwanie treści za pomocą AI | Tworzenie z użyciem AI od Google. W przeciwnym razie możesz zacząć rozszerzać projekt, postępując zgodnie z instrukcjami podanymi poniżej.

Omówienie

Projekt agenta w Dokumentach udostępnia interfejs wyszukiwania konwersacyjnego dla określonego zbioru treści, korzystając z interfejsu Gemini API i modeli generatywnych Google. Użytkownicy mogą zadawać szczegółowe pytania w formie konwersacji i otrzymywać szczegółowe odpowiedzi na podstawie konkretnego zbioru treści. W tle agent Docs bierze pod uwagę pytanie i przeszukuje bazę danych wektorów treści, a następnie tworzy szczegółowy komunikat dla modelu generatywnego, w tym fragmenty odpowiedniego tekstu. Model generatywny generuje odpowiedź na pytanie, a agent Docs formatuje ją i przedstawia użytkownikowi.

Aplikacja projektu Docs Agent Rysunek 1. Schemat funkcjonalny aplikacji projektu agenta Dokumenty

Kluczem do umożliwienia korzystania z usługi Docs Agent do udzielania odpowiedzi na pytania dotyczące Twoich treści jest utworzenie bazy danych wektorów tych treści. Dzielisz treści na logiczne fragmenty tekstu i generujesz wektor dla każdego z nich. Wektory te to liczbowe reprezentacje informacji w każdym fragmencie. Są generowane za pomocą funkcji wstawiania tekstu opartej na modelach generatywnych Google.

Gdy użytkownik zada pytanie, agent Docs używa tej samej funkcji wstawiania tekstu, aby utworzyć reprezentacje liczbową pytania, a następnie używa tej wartości do wyszukiwania w bazie danych wektorów powiązanych treści. Wybiera najlepsze wyniki i dodaje te informacje do promptu dla modelu generatywnego. Model AI na podstawie pytania i dodatkowych informacji kontekstowych generuje odpowiedź.

Konfigurowanie projektu

Te instrukcje pomogą Ci skonfigurować projekt usługi Docs Agent na potrzeby rozwoju i testowania. Ogólne czynności to zainstalowanie wymaganego oprogramowania, skonfigurowanie kilku zmiennych środowiskowych, sklonowanie projektu z repozytorium kodu i uruchomienie instalacji konfiguracji. Projekt kodu korzysta z Python Poetry do zarządzania pakietami i środowiskiem wykonawczym Pythona.

Instalowanie wymagań wstępnych

Projekt agenta Dokumentów korzysta z Pythona 3 i Python Poetry do zarządzania pakietami oraz uruchamiania aplikacji. Poniższe instrukcje instalacji dotyczą maszyny z Linuksem.

Aby zainstalować wymagane oprogramowanie:

  1. Zainstaluj Pythona 3 i pakiet środowiska wirtualnego venv dla Pythona.
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. Zainstaluj Python Poetry, aby zarządzać zależnościami i pakowaniem projektu.
    curl -sSL https://install.python-poetry.org | python3 -
    

Jeśli rozszerzysz projekt, możesz użyć Python Poetry, aby dodać więcej bibliotek Pythona.

Ustawianie zmiennych środowiskowych

Ustaw kilka zmiennych środowiskowych, które są wymagane, aby umożliwić działanie projektu kodu agenta Docs, w tym klucza Google Gemini API i ustawienia Pythona Poezja. Jeśli używasz Linuksa, możesz dodać te zmienne do pliku $HOME/.bashrc, aby stały się domyślnymi ustawieniami sesji terminala.

Aby ustawić zmienne środowiskowe:

  1. Uzyskaj klucz interfejsu Gemini API i skopiuj ciąg znaków klucza.
  2. Ustaw klucz interfejsu API jako zmienną środowiskową. Na hostach z Linuksem użyj tego polecenia:
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. Rozwiąż znane problemy w Python Poetry, ustawiając parametr PYTHON_KEYRING_BACKEND. Na hostach z Linuksem użyj tego polecenia.
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

Klonowanie i konfigurowanie projektu

Pobierz kod projektu i użyj polecenia instalacji Poetry, aby pobrać wymagane zależności i skonfigurować projekt. Aby pobrać i skonfigurować kod projektu, potrzebujesz oprogramowania do kontroli wersji git. external Aby pobrać i skonfigurować kod projektu:

  1. Sklonuj repozytorium Git za pomocą tego polecenia:
    git clone https://github.com/google/generative-ai-docs
    
  2. Opcjonalnie skonfiguruj lokalne repozytorium Git, aby używać selektywnego sprawdzania, dzięki czemu będziesz mieć tylko pliki projektu agenta Dokumentów.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. Przejdź do katalogu głównego projektu docs-agent.
    cd examples/gemini/python/docs-agent/
    
  4. Uruchom polecenie instalacji Poetry, aby pobrać zależności i skonfigurować projekt:
    poetry install
    

Przygotowanie treści

Projekt agenta w Dokumentach jest przeznaczony do pracy z treściami tekstowymi i zawiera narzędzia do pracy z witrynami, które używają formatu źródłowego Markdown. Jeśli pracujesz z treściami witryny, musisz zachować (lub powielić) strukturę katalogu obsługiwanej witryny, aby umożliwić zadaniu przetwarzania treści zmapowanie tych treści i utworzenie do nich linków.

W zależności od formatu i szczegółów treści może być konieczne ich oczyszczenie, aby usunąć informacje niepubliczne, notatki wewnętrzne lub inne informacje, których nie chcesz udostępniać w wyszukiwarce. Należy zachować podstawowe formatowanie, takie jak tytuły i nagłówki, które ułatwiają logiczne dzielenie tekstu na fragmenty na etapie przetwarzania treści.

Aby przygotować treści do przetwarzania:

  1. Utwórz katalog treści, które ma wyszukiwać AI.
    mkdir docs-agent/content/
    
  2. Skopiuj treści do katalogu docs-agent/content/. Jeśli treść to witryna, zachowaj (lub zduplikuj) strukturę katalogu witryny, która jest wyświetlana.
  3. Oczyść lub zmodyfikuj treści, aby usunąć informacje niepubliczne lub inne informacje, których nie chcesz uwzględniać w wyszukiwaniach.

Korzystanie z dokumentacji Fluttera do testowania

Jeśli potrzebujesz zestawu treści do testowania agenta w Documents, możesz użyć dokumentacji dla programistów Fluttera.

Aby uzyskać dostęp do dokumentacji dla deweloperów Flutter:

  1. Przejdź do katalogu treści, które mają być wyszukiwane przez agenta AI.
    cd docs-agent/content/
    
  2. Sklonuj dokumenty Fluttera do katalogu docs-agent/content/.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

Przetwarzanie treści

Aby agent wyszukiwania mógł skutecznie wyszukiwać treści związane z pytaniami użytkowników, musisz utworzyć bazę danych wektorów reprezentujących Twoje treści. Wektory są generowane za pomocą funkcji modelu generatywnego AI o nazwie wektor dystrybucyjny tekstu. Reprezentacje właściwościowe tekstu to liczbowe reprezentacje treści tekstowych. Przybliżają one znaczenie semantyczne tekstu do zbioru liczb. Dzięki liczbowej reprezentacji informacji system może przyjąć zapytanie użytkownika, oszacować jego znaczenie za pomocą tej samej funkcji uczenia się zastępczego tekstu, a potem znaleźć powiązane informacje za pomocą obliczeń matematycznych przy użyciu algorytmu k-najbliższych sąsiadów (k-NN).

Dzielenie zawartości tekstowej

Ilość tekstu, którą może skutecznie reprezentować wektor osadzania tekstu, jest ograniczona. Ten projekt ogranicza tekst reprezentowany w wektorze do 3000 znaków lub mniej, co oznacza, że musisz podzielić treści na fragmenty, które nie przekraczają tego limitu znaków. W tej sekcji opisaliśmy, jak użyć skryptu udostępnionego w projekcie usługi Docs Agent, aby podzielić pliki Markdown na mniejsze fragmenty tekstu. Wskazówki dotyczące pracy z innymi formatami treści znajdziesz w artykule Praca z innymi formatami.

Aby podzielić zawartość w formacie Markdown:

  1. Skonfiguruj parametry wejściowe skryptu przetwarzania, edytując plik docs-agent/config.yaml. Ten przykład kieruje się do podzbioru dokumentacji Flutter:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
  2. Zapisz zmiany w tym pliku konfiguracji.
  3. Przejdź do katalogu projektu docs-agent:
    cd docs-agent/
    
  4. Podziel treść źródłową Markdown, wykonując polecenie agent chunk:
    agent chunk
    

Skrypt przetwarza dane wejściowe i tworzy pliki tekstowe danych wyjściowych w katalogu docs-agent/data, dzieląc tekst na podstawie tytułów, nagłówków i powiązanych akapitów. Przetwarzanie może zająć trochę czasu w zależności od rozmiaru treści.

Tworzenie wektorów dystrybucyjnych tekstu

Po podzieleniu treści na znaczeniowe fragmenty o odpowiednich rozmiarach możesz wypełnić bazę danych wektorów za pomocą funkcji embeddingu tekstu. Projekt agenta w Docs korzysta z bazy danych wektorów Chroma do przechowywania wektorów zanurzania tekstu. Z tych instrukcji dowiesz się, jak użyć skryptu Docs Agents do wypełnienia bazy danych wektorów treściami podzielonymi na części.

Aby wygenerować wektory dystrybucyjne tekstu i uzupełnić bazę danych wektorów:

  1. Przejdź do katalogu projektu docs-agent:
    cd docs-agent/
    
  2. Wypełnij bazę danych wektorów swoimi treściami za pomocą polecenia agent populate:
    agent populate
    

Ten skrypt korzysta z interfejsu Google Gemini API do generowania wektorów embeddingu tekstu, a następnie zapisuje dane wyjściowe w bazie danych wektorów. Przetwarzanie może zająć trochę czasu w zależności od rozmiaru treści.

Obsługa innych formatów

Projekt Docs Agent jest przeznaczony do pracy z treściami witryny w formacie Markdown. Autorzy projektu stworzyli kilka skryptów konwerterów, aby generować inne typy treści w formacie Markdown, w tym Dokumenty Google, Portable Document Format (PDF) i Gmail. Więcej informacji o używaniu tych konwerterów znajdziesz w katalogu docs-agent/apps_script w repozytorium kodu.

Konwertowanie innych formatów treści

W projekcie możesz używać innych formatów treści, ale te dodatkowe metody musisz utworzyć samodzielnie lub wspólnie z innymi członkami społeczności. Sprawdź repozytorium kodu, aby znaleźć problemypull requesty, które mogą dotyczyć osób tworzących podobne rozwiązania.

Kod klucza, który musisz utworzyć, aby obsługiwać inne formaty treści, to skrypt splittera, taki jak skrypt files_to_plain_text.py. Postaraj się utworzyć skrypt lub program, który będzie generował podobne dane wyjściowe. Pamiętaj, że ostateczny tekst powinien zawierać minimalne formatowanie i niezbędne informacje. Jeśli używasz formatów treści, takich jak HTML czy JSON, usuń jak najwięcej formatowania nieinformacyjnego (tagów, skryptów, CSS), aby nie zniekształcało to wartości tekstowych zaszyfrowanych ciągów znaków wygenerowanych na ich podstawie.

Po utworzeniu skryptu splittera dla formatu treści możesz uruchomić skrypt populate_vector_database.py, aby wypełnić bazę danych wektorów. Więcej informacji o przetwarzaniu plików do wykorzystania w usłudze Docs Agent znajdziesz w pliku Readme na temat wstępnego przetwarzania.

Testowanie aplikacji

Po wypełnieniu bazy danych wektorów projekt jest gotowy do testowania. Projekt udostępnia funkcję pakowania, która umożliwia uruchamianie projektu lokalnie.

Aby uruchomić i przetestować interfejs internetowy projektu:

  1. Przejdź do katalogu projektu docs-agent:
    cd docs-agent/
    
  2. Uruchom skrypt uruchamiania aplikacji internetowej:
    agent chatbot
    
  3. W przeglądarce otwórz adres URL podany w wyjściu skryptu uruchamiającego i przetestuj aplikację.
    * Running on http://your-hostname-here:5000
    

Opcje implementacji

Interfejs Gemini API udostępnia narzędzia programistyczne, które mogą zastąpić elementy implementacji agenta w Docs, w szczególności: semantyczne wyszukiwanie i odpowiadanie na pytania oparte na atrybutach (AQA) w modelu Gemini. Możesz użyć funkcji wyszukiwania semantycznego interfejsu Gemini API, aby zastąpić osobną bazę danych wektorów. Funkcja odbioru danych semantycznych umożliwia generowanie zasobów danych dla treści i ich przechowywanie. Model Gemini AQA jest dostrojony do odpowiadania na pytania na podstawie materiału źródłowego podanego w promptach. Korzystając z wyszukiwania semantycznego wraz z modelem AQA, odpowiedz na pytania dotyczące Twoich treści w interfejsie Gemini API.

Agent dokumentów zawiera opcje konfiguracji, które umożliwiają korzystanie z funkcji interfejsu API semantycznego wyszukiwania lub modelu AQA Gemini albo z obu tych opcji. Więcej informacji znajdziesz w README dotyczącym usługi Docs Agent.

Dodatkowe materiały

Więcej informacji o projekcie Docs Agent znajdziesz w repozytorium kodu. Jeśli potrzebujesz pomocy przy tworzeniu aplikacji lub szukasz współpracowników, zajrzyj na serwer Discord dla deweloperów Google.

Aplikacje produkcyjne

Jeśli planujesz wdrożenie agenta Dokumentów dla dużej liczby odbiorców, pamiętaj, że korzystanie z interfejsu Google Gemini API może podlegać ograniczeniom szybkości i innym ograniczeniami użycia. Jeśli rozważasz tworzenie produkcyjnej aplikacji z użyciem interfejsu Gemini API, takiej jak agent w Docs, zapoznaj się z usługami Google Cloud Vertex AI, aby zwiększyć skalowalność i niezawodność aplikacji.