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

Wyszukiwanie informacji to jedno z najczęstszych zastosowań generatywnych modeli 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ć oparty na AI interfejs wyszukiwania o charakterze konwersacyjnym do swoich treści. Jest on oparty na Dokumentach Agent, projekcie open source, który korzysta z interfejsu API Google Gemini do tworzenia interfejsu wyszukiwania w formie konwersacji bez konieczności trenowania nowego modelu AI ani dostosowywania 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 Google Gemini API i modeli generatywnych. 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 prompt dla modelu generatywnego, w tym fragmenty odpowiedniego tekstu. Model generatywny generuje odpowiedź na pytanie, a agent Dokumentów formatuje ją i przedstawia użytkownikowi.

Schemat funkcjonalny usługi 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 embeddingu tekstowego opartej na modelach generatywnych Google.

Gdy użytkownik zadaje pytanie, agent Docs używa tej samej funkcji wstawiania tekstu do utworzenia liczbowej reprezentacji tego pytania i wykorzystania tej wartości do przeszukania bazy danych wektorów w celu znalezienia 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 przeprowadzą Cię przez proces konfigurowania projektu usługi Docs Agent na potrzeby tworzenia 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 Poetry. 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. Pobierz klucz interfejsu Gemini API Google 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.externalexternal

  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 Dokumentów jest przeznaczony do pracy z tekstem. 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 serwowanej 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ści stanowią witrynę, zachowaj (lub powiel) 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 ma wyszukiwać agent 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 wziąć pod uwagę pytanie użytkownika, oszacować jego znaczenie za pomocą tej samej funkcji uczenia uwzględniającej tekst, a następnie znaleźć powiązane informacje za pomocą obliczeń matematycznych z wykorzystaniem 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 tekstowe i wypełnić bazę danych wektorową:

  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 używa interfejsu Google Gemini API do generowania wektorów embeddingu tekstowego, 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 usługi 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, pamiętaj, aby usunąć jak najwięcej elementów formatowania nieinformacyjnego (tagi, skrypty, CSS), aby nie zakłócały one wartości osadzonych tekstów, które generujesz.

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 zawiera 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 uruchamiający aplikację internetową:
    agent chatbot
    
  3. W przeglądarce otwórz adres URL widoczny 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ć komponenty implementacji agenta w Docs, w szczególności: semantyczne wyszukiwanie i model Gemini AQA (od ang. Attributed Question Answering) odpowiadający na pytania. 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, możesz odpowiadać 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 Gemini API Google może podlegać ograniczeniom szybkości i innym ograniczeniami użycia. Jeśli rozważasz stworzenie aplikacji produkcyjnej z użyciem interfejsu Gemini API, takiej jak agent Docs, zapoznaj się z usługami Google Cloud Vertex AI, aby zwiększyć skalowalność i niezawodność aplikacji.