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

Wyszukiwanie informacji to jedno z najczęstszych zastosowań modeli generatywnych sztucznej inteligencji (AI). Utworzenie interfejsu wyszukiwania konwersacyjnego dotyczącego treści z wykorzystaniem AI umożliwia użytkownikom zadawanie określonych pytań i uzyskanie bezpośrednich odpowiedzi.

Z tego samouczka dowiesz się, jak utworzyć oparty na AI, konwersacyjny interfejs wyszukiwania dla Twoich treści. Opiera się on na narzędziu Dokumenty Agent – projekcie open source, w którym interfejs wyszukiwania konwersacyjnego jest tworzony za pomocą interfejsu Google Gemini API bez trenowania nowego modelu AI ani dostrajania modeli przy użyciu modeli Gemini. Oznacza to, że tę funkcję wyszukiwania możesz szybko utworzyć i używać jej w małych i dużych zestawach treści.

Aby obejrzeć film z omówieniem projektu i jego rozwojem, w tym informacjami od osób, które go tworzą, obejrzyj film Wyszukiwanie treści w AI | Build with Google AI. W przeciwnym razie możesz rozszerzyć projekt, postępując zgodnie z poniższymi instrukcjami.

Przegląd

Projekt agenta Dokumentów udostępnia konwersacyjny interfejs wyszukiwania określonego zbioru treści obsługiwany przez interfejs Google Gemini API i modele generatywne. Użytkownicy mogą zadawać szczegółowe pytania w stylu konwersacyjnym i otrzymywać szczegółową odpowiedź na podstawie określonego zestawu treści. Agent Dokumentów wyszukuje wektorowe dane w bazie danych treści i tworzy szczegółowy prompt dla modelu generatywnego wraz z fragmentami odpowiedniego tekstu. Model generatywny generuje odpowiedź na pytanie, a agent Dokumentów formatuje odpowiedź i przedstawia ją użytkownikowi.

Schemat funkcji agenta Dokumentów Rysunek 1. Schemat funkcji aplikacji projektu agenta Dokumentów.

Kluczem do tego, aby agent Dokumentów mógł odpowiadać na pytania dotyczące treści, jest utworzenie bazy danych wektorowych tych treści. Dzielisz treści na logiczne fragmenty tekstu i dla każdego z nich generujesz wektor. Te wektory są liczbowymi reprezentacjami informacji w każdym fragmencie i są generowane za pomocą funkcji umieszczania tekstu przez AI z modeli generatywnych Google.

Gdy użytkownik zadaje pytanie, agent Dokumentów używa tej samej funkcji umieszczania tekstu, aby utworzyć liczbową reprezentację tego pytania, a następnie używa tej wartości do przeszukiwania bazy danych wektorów i znajdowania powiązanej treści. Wykorzystuje najlepsze wyniki i dodaje te informacje do promptu modelu generatywnego. Model AI pobiera pytanie oraz dodatkowe informacje kontekstowe i generuje odpowiedź.

Konfigurowanie projektu

Te instrukcje przeprowadzą Cię przez proces konfigurowania projektu agenta Dokumentów na potrzeby programowania i testowania. Ogólne czynności to zainstalowanie wymaganego oprogramowania, ustawienie kilku zmiennych środowiskowych, skopiowanie projektu z repozytorium kodu i uruchomienie instalacji konfiguracji. Projekt kodu wykorzystuje Python Poetry do zarządzania pakietami i środowiskiem wykonawczym Pythona.

Instalowanie wymagań wstępnych

Projekt agenta Dokumentów używa języka Python 3 i Poetry w Pythonie do zarządzania pakietami i uruchamiania aplikacji. Poniższe instrukcje instalacji dotyczą hosta z systemem Linux.

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 pakietem w projekcie.
    curl -sSL https://install.python-poetry.org | python3 -
    

Możesz dodać więcej bibliotek Pythona, jeśli rozszerzysz projekt.

Ustawianie zmiennych środowiskowych

Ustaw kilka zmiennych środowiskowych, które są wymagane do uruchomienia projektu kodu agenta Dokumentów, w tym klucz interfejsu API Google Gemini i ustawienie Poetry w Pythonie. Jeśli korzystasz z Linuksa, możesz dodać te zmienne do pliku $HOME/.bashrc, aby ustawić je jako domyślne ustawienia sesji terminala.

Aby ustawić zmienne środowiskowe:

  1. Pobierz klucz interfejsu API Google Gemini i skopiuj jego ciąg znaków.
  2. Ustaw klucz interfejsu API jako zmienną środowiskową. Na hostach z systemem Linux użyj tego polecenia.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. Aby rozwiązać znany problem z poezją w Pythonie, ustaw parametr PYTHON_KEYRING_BACKEND. Na hostach z systemem Linux 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ć kod źródłowy projektu, potrzebujesz oprogramowania do kontroli źródła git. 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 tak, aby korzystało z rzadkiego procesu płatności, aby mieć tylko pliki związane z projektem 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 w usłudze 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 Dokumentów jest przeznaczony do pracy z treścią tekstową i zawiera narzędzia przeznaczone specjalnie do pracy z witrynami, których formatem źródłowym jest Markdown. Jeśli zajmujesz się zawartością witryny, musisz zachować (lub powielić) strukturę katalogów udostępnianej witryny, aby umożliwić zadanie przetwarzania treści mapowanie i tworzenie do niej linków.

W zależności od formatu i szczegółów treści może być konieczne ich wyczyszczenie, aby usunąć niepubliczne informacje, notatki wewnętrzne lub inne informacje, które nie powinny być dostępne dla wyszukiwarki. Pamiętaj o zachowaniu podstawowego formatowania, np. tytułów i nagłówków, aby zachować logiczne podziały tekstu (fragmenty) na etapie przetwarzania treści.

Aby przygotować treści do przetwarzania:

  1. Utwórz katalog z treściami, które ma przeszukać agent AI.
    mkdir docs-agent/content/
    
  2. Skopiuj treść do katalogu docs-agent/content/. Jeśli treścią jest witryna, zachowaj (lub zreplikuj) strukturę katalogów udostępnianej witryny.
  3. Wyczyść lub zmodyfikuj treść zgodnie z potrzebami, aby usunąć niepubliczne informacje lub inne informacje, których nie chcesz uwzględniać w wynikach wyszukiwania.

Testowanie za pomocą dokumentacji Flutter

Jeśli potrzebujesz zestawu treści do testowania agenta Dokumentów, możesz skorzystać z dokumentacji dla programistów Flutter.

Aby pobrać dokumentację dla deweloperów Flutter:

  1. Przejdź do katalogu treści, które ma wyszukać agent AI.
    cd docs-agent/content/
    
  2. Skopiuj dokumenty Flutter do katalogu docs-agent/content/.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

Przetwarzaj treść

Aby agent wyszukiwania mógł skutecznie wyszukiwać treści związane z pytaniami użytkowników, musisz utworzyć bazę danych wektorów reprezentujących treści. Wektory są generowane za pomocą funkcji generatywnego modelu AI nazywanej osadzaniem tekstu. Wektory dystrybucyjne tekstu to liczbowe reprezentacje zawartości tekstowej. Przybliżają one znaczenie semantyczne tekstu jako zestaw liczb. Dzięki liczbowym zapisom informacji system może przyjąć pytanie użytkownika, oszacować ich znaczenie za pomocą tej samej funkcji osadzania tekstu, a następnie znaleźć powiązane informacje w postaci obliczeń matematycznych z użyciem algorytmu k-najbliższych sąsiadów (k-NN).

Dzielenie treści tekstowej

Ilość tekstu, który wektor osadzania tekstu może efektywnie reprezentować, jest ograniczona. W ramach tego projektu obowiązuje limit tekstu przedstawionego w wektorze do 3000 znaków, co oznacza, że trzeba podzielić treść na fragmenty w ramach tego limitu znaków. W tej sekcji dowiesz się, jak używać skryptu dostarczonego z projektem agenta Dokumentów, aby podzielić pliki Markdown na mniejsze fragmenty tekstu. Wskazówki dotyczące pracy z innymi formatami treści znajdziesz w sekcji Obsługa innych formatów.

Aby podzielić treść w formacie Markdown:

  1. Skonfiguruj parametry wejściowe skryptu przetwarzania, edytując plik docs-agent/config.yaml. Ten przykład dotyczy podzbioru dokumentów 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, uruchamiając polecenie agent chunk:
    agent chunk
    

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

Tworzenie wektorów dystrybucyjnych tekstu

Po podzieleniu treści na odpowiednie fragmenty o odpowiednim rozmiarze możesz wypełnić bazę danych wektorów swoimi treściami za pomocą funkcji osadzania tekstu. Projekt agenta Dokumentów korzysta z bazy danych wektorów Chroma do przechowywania wektorów dystrybucyjnych tekstu. Te instrukcje pokazują, jak użyć skryptu agentów Dokumentów do wypełnienia bazy danych wektorów podzieloną treścią.

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

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

Ten skrypt używa interfejsu Google Gemini API do generowania wektorów umieszczania 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ługuj inne formaty

Projekt agenta Dokumentów jest przeznaczony do pracy z treścią stron internetowych w formacie Markdown. Autorzy projektu opracowali kilka skryptów konwertera, aby generować inne rodzaje treści w formacie Markdown, w tym Dokumenty Google, Portable Document Format (PDF) i Gmail. Więcej informacji o korzystaniu z 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 muszą być opracowane przez Ciebie lub innych członków społeczności. Przejrzyj repozytorium kodu Problemy i żądania pobierania, aby znaleźć osoby tworzące podobne rozwiązania.

Kluczowym kodem, który musisz utworzyć, aby obsługiwać inne formaty treści, jest skrypt podziału, taki jak skrypt files_to_plain_text.py. Utwórz skrypt lub program, który będzie generował dane wyjściowe podobne do tych używanych w skrypcie. Pamiętaj, że wynikowy tekst powinien zawierać minimalną ilość formatowania i zbędne informacje. Jeśli używasz formatów treści, takich jak HTML lub JSON, pamiętaj, aby usunąć jak najwięcej nieinformacyjnych formatowania (tagi, skrypty, CSS), aby nie zniekształcić wartości umieszczonych na podstawie tekstu umieszczonego na ich podstawie.

Po utworzeniu skryptu rozdzielającego 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 użycia z agentem Dokumentów znajdziesz w artykule na temat wstępnego przetwarzania plików Readme.

Testowanie aplikacji

Po zapełnieniu bazy danych wektorów projekt jest gotowy do testowania. Projekt udostępnia funkcję tworzenia pakietu, która pozwala uruchamiać go 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 wejdź na stronę pod adresem URL widocznym w danych wyjściowych skryptu uruchamiania i przetestuj aplikację.
    * Running on http://your-hostname-here:5000
    

Opcje implementacji

Gemini API udostępnia narzędzia programistyczne, które mogą zastąpić komponenty implementacji agenta Dokumentów, a w szczególności pobieranie semantycznego i przypisywania odpowiedzi na pytanie (AQA) wersji Gemini. Do zastąpienia oddzielnej bazy danych wektorów możesz użyć funkcji pobierania semantycznego interfejsu Gemini API. Funkcja pobierania semantycznego umożliwia generowanie wektorów dystrybucyjnych dla Twoich treści i ich przechowywanie. Model AQA Gemini jest dostrojony w taki sposób, aby odpowiadał na pytania z materiałami źródłowymi dostarczonymi w prompcie. Pobieranie semantyczne razem z modelem AQA służy do odpowiadania na pytania o treści w interfejsie Gemini API.

Agent Dokumentów udostępnia opcje konfiguracji umożliwiające korzystanie z funkcji interfejsu Semantic Retrieval API, modelu AQA Gemini lub obu jednocześnie. Więcej informacji znajdziesz w artykule o pliku odczytu dla agenta Dokumentów.

Dodatkowe materiały

Więcej informacji o projekcie agenta Dokumentów znajdziesz w repozytorium kodu. Jeśli potrzebujesz pomocy w tworzeniu aplikacji lub szukasz współpracowników programistów, zajrzyj na stronę Google Developers Community Discord.

Aplikacje produkcyjne

Jeśli planujesz wdrożyć agenta Dokumentów dla dużej grupy odbiorców, pamiętaj, że korzystanie z interfejsu Google Gemini API może podlegać ograniczeniom liczby żądań i innym ograniczeniom użytkowania. Jeśli zastanawiasz się nad utworzeniem aplikacji produkcyjnej za pomocą interfejsu Gemini API, np. Document Agent, zapoznaj się z usługami Google Cloud Vertex AI, aby zapewnić większą skalowalność i niezawodność aplikacji.