Dokümanlar Aracısı ile AI içerik araması oluşturma

Bilgi arama, yapay zeka (AI) üretken modellerinin en yaygın kullanım alanlarından biridir. Yapay zekadan yararlanarak içeriğiniz için etkileşimli bir arama arayüzü oluşturmak, kullanıcılarınızın belirli sorular sormasına ve doğrudan yanıtlar almasına olanak tanır.

Bu eğiticide, içeriğiniz için yapay zeka destekli ve etkileşimli arama arayüzü oluşturma hakkında bilgi verilmektedir. Bu model, yeni bir AI modelini eğitmeden veya Gemini modelleriyle model ayarlaması yapmadan konuşmaya dayalı bir arama arayüzü oluşturmak için Google Gemini API'yi kullanan açık kaynaklı bir proje olan Dokümanlar Aracısı'nı temel alır. Yani bu arama özelliğini hızla geliştirip küçük ve büyük içerik kümeleri için kullanabilirsiniz.

Projeye ve projenin kapsamının genişletilmesine dair genel bir bakış sunan, projeyi oluşturan kişilerin görüşlerini içeren bir video için şu videoya göz atın: AI Content Search | Build with Google AI. Aksi takdirde, aşağıdaki talimatları uygulayarak projeyi genişletmeye başlayabilirsiniz.

Genel bakış

Dokümanlar Aracısı projesi, belirli bir içerik grubu için Google Gemini API ve üretken modeller tarafından desteklenen bir sohbet arama arayüzü sağlar. Kullanıcılar sohbet tarzında ayrıntılı sorular sorabilir ve belirli bir içerik grubuna göre ayrıntılı bir yanıt alabilir. Perde arkasında, Dokümanlar Aracısı soruyu alır ve içeriğin vektör veritabanında arama yapar ve ilgili metnin snippet'lerini de içeren, üretken model için ayrıntılı bir istem oluşturur. Üretken model, soruya yanıt oluşturur ve Dokümanlar Aracısı yanıtı biçimlendirir ve kullanıcıya sunar.

Dokümanlar Aracısının işlevsel şeması Şekil 1. Dokümanlar Aracısı proje uygulamasının işlevsel diyagramı.

Dokümanlar Aracısı'nın içeriğinizle ilgili soruları yanıtlayabilmesini sağlamanın anahtarı, söz konusu içeriğin bir vektör veritabanı oluşturmaktır. İçeriğinizi mantıksal metin parçalarına ayırır ve bunların her biri için bir vektör oluşturursunuz. Bu vektörler, her bir parçadaki bilgilerin sayısal gösterimleridir ve Google'ın üretken modellerinden AI metin yerleştirme işleviyle oluşturulur.

Bir kullanıcı soru sorduğunda, Dokümanlar Aracısı sorunun sayısal bir gösterimini oluşturmak için aynı metin yerleştirme işlevini kullanır ve bu değeri vektör veritabanında arama yapmak ve ilgili içeriği bulmak için kullanır. En iyi sonuçları alır ve bu bilgileri üretici model için bir isteme ekler. AI modeli, soruyu ve ek bağlam bilgilerini alıp bir yanıt oluşturur.

Proje ayarlama

Bu talimatlar, Dokümanlar Aracısı projesini geliştirme ve test için ayarlamanızda size yol gösterir. Genel adımlar, bazı ön koşul yazılımları yüklemek, birkaç ortam değişkeni ayarlamak, projeyi kod deposundan klonlamak ve yapılandırma yüklemesini çalıştırmaktır. Kod projesi, paketleri ve Python çalışma zamanı ortamını yönetmek için Python Poetry'yi kullanır.

Ön koşulları yükleme

Dokümanlar Aracısı projesi, paketleri yönetmek ve uygulamayı çalıştırmak için Python 3 ve Python Poetry kullanır. Aşağıdaki yükleme talimatları bir Linux ana makine makinesi içindir.

Gerekli yazılımı yüklemek için:

  1. Python 3'ü ve Python için venv sanal ortam paketini yükleyin.
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. Projenin bağımlılıklarını ve paketlemesini yönetmek için Python Poetry'yi yükleyin.
    curl -sSL https://install.python-poetry.org | python3 -
    

Projeyi genişletirseniz daha fazla Python kitaplığı eklemek için Python Poetry'yi kullanabilirsiniz.

Ortam değişkenlerini ayarlama

Dokümanlar Aracısı kod projesinin çalışmasına izin vermek için Google Gemini API Anahtarı ve Python Şiir ayarı da dahil olmak üzere gereken birkaç ortam değişkenini ayarlayın. Linux kullanıyorsanız bu değişkenleri terminal oturumlarınız için varsayılan ayarlar yapmak üzere $HOME/.bashrc dosyanıza eklemek isteyebilirsiniz.

Ortam değişkenlerini ayarlamak için:

  1. Bir Google Gemini API Anahtarı alın ve anahtar dizesini kopyalayın.
  2. API anahtarını ortam değişkeni olarak ayarlayın. Linux ana makinelerinde aşağıdaki komutu kullanın.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. PYTHON_KEYRING_BACKEND parametresini ayarlayarak Python Şiir ile ilgili bilinen bir sorunu çözün. Linux ana makinelerinde aşağıdaki komutu kullanın.
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

Projeyi klonlama ve yapılandırma

Proje kodunu indirin. Gerekli bağımlılıkları indirmek ve projeyi yapılandırmak için Poetry kurulum komutunu kullanın. Proje kaynak kodunu almak için git kaynak kontrol yazılımına ihtiyacınız vardır. external Proje kodunu indirmek ve yapılandırmak için:

  1. Aşağıdaki komutu kullanarak git deposunu klonlayın.
    git clone https://github.com/google/generative-ai-docs
    
  2. İsteğe bağlı olarak, yerel git deponuzu az ödeme yöntemini kullanacak şekilde yapılandırın. Böylece, yalnızca Dokümanlar Aracısı projesinin dosyalarına sahip olursunuz.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. docs-agent projesinin kök dizinine taşıyın.
    cd examples/gemini/python/docs-agent/
    
  4. Bağımlılıkları indirmek ve projeyi yapılandırmak için Poetry yükleme komutunu çalıştırın:
    poetry install
    

İçerik hazırlama

Dokümanlar Aracısı projesi metin içeriğiyle çalışacak şekilde tasarlanmıştır ve özellikle kaynak biçimi olarak Markdown'ı kullanan web siteleriyle çalışmak için araçlar içerir. Web sitesi içeriğiyle çalışıyorsanız içerik işleme görevinin içeriği eşlemesini ve bağlantılarını oluşturmasını sağlamak için sunulan web sitesinin dizin yapısını korumanız (veya çoğaltmanız) gerekir.

İçeriğinizin biçimine ve ayrıntılarına bağlı olarak, herkese açık olmayan bilgileri, dahili notları veya aranabilir olmasını istemediğiniz diğer bilgileri kaldırmak için içeriğinizi temizlemeniz gerekebilir. İçerik işleme adımında, mantıksal metin bölmeleri veya parçaları oluşturmaya yardımcı olan başlıklar ve başlıklar gibi temel biçimlendirmeleri korumanız gerekir.

İçeriği işlenmeye hazırlamak için:

  1. AI aracısının aramasını istediğiniz içerik için bir dizin oluşturun.
    mkdir docs-agent/content/
    
  2. İçeriğinizi docs-agent/content/ dizinine kopyalayın. İçerik bir web sitesiyse sunulan web sitesinin dizin yapısını koruyun (veya çoğaltın).
  3. Herkese açık olmayan bilgileri veya aramalara dahil edilmesini istemediğiniz diğer bilgileri kaldırmak için içeriği temizleyin ya da düzenleyin.

Test için Flutter belgelerini kullanın

Dokümanlar Aracısı'nı test etmek için bir dizi içeriğe ihtiyacınız varsa test için Flutter geliştirici belgelerini kullanabilirsiniz.

Flutter geliştirici belgelerini edinmek için:

  1. AI aracısının aramasını istediğiniz içeriğin içerik dizinine geçin.
    cd docs-agent/content/
    
  2. Flutter dokümanlarını docs-agent/content/ dizinine klonlayın.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

İçeriği işle

Arama aracısının kullanıcıların sorularıyla alakalı içeriği etkili bir şekilde arayabilmesi için, içeriğinizi temsil eden vektörlerden oluşan bir veritabanı oluşturmanız gerekir. Vektörler, metin yerleştirme adı verilen üretken yapay zeka modeli işlevi kullanılarak oluşturulur. Metin yerleştirmeleri, metin içeriğinin sayısal gösterimleridir. Metnin anlamsal anlamını bir sayı kümesi olarak tahmin ederler. Bilgilerin sayısal temsillerine sahip olmak, sistemin kullanıcının sorusunu almasına, aynı metin yerleştirme işlevini kullanarak anlamını tahmin etmesine ve ardından k-en yakın komşular (k-NN) algoritmasını kullanarak matematiksel hesaplama olarak ilgili bilgileri bulmasına olanak tanır.

Metin içeriğini böl

Bir metin yerleştirme vektörünün etkin bir şekilde temsil edebileceği metin miktarı sınırlıdır. Bu proje, vektör olarak temsil edilen metni en fazla 3.000 karakterle sınırlandırır. Bu nedenle, içeriğinizi bu karakter sınırının altında parçalara bölmeniz gerekir. Bu bölümde, Markdown dosyalarını daha küçük metin parçalarına bölmek için Dokümanlar Aracısı projesiyle sağlanan bir komut dosyasının nasıl kullanılacağı açıklanmaktadır. Diğer içerik biçimleriyle çalışma hakkında ipuçları için Diğer biçimleri işleme konusuna bakın.

Markdown biçimindeki içeriği bölmek için:

  1. docs-agent/config.yaml dosyasını düzenleyerek işleme komut dosyası için giriş parametrelerini yapılandırın. Bu örnek, Flutter belgelerinin bir alt kümesini hedefliyor:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. Bu yapılandırma dosyasında yaptığınız değişiklikleri kaydedin.
  3. docs-agent proje dizinine gidin:
    cd docs-agent/
    
  4. agent chunk komutunu çalıştırarak Markdown kaynak içeriğini bölün:
    agent chunk
    

Komut dosyası, giriş içeriğini işler ve docs-agent/data dizininde çıkış metin dosyaları oluşturarak metni başlıklara ve ilgili paragraflara göre böler. İçeriğinizin boyutuna bağlı olarak işleme biraz zaman alabilir.

Metin gömme vektörleri oluşturma

İçeriğinizi uygun boyutlu, anlamlı parçalara böldükten sonra, metin yerleştirme işlevi kullanarak vektör veritabanını içeriğinizle doldurabilirsiniz. Dokümanlar Aracısı projesi, metin yerleştirme vektörlerini depolamak için Chroma vektör veritabanını kullanır. Bu talimatlar, bir vektör veritabanını bölünmüş içeriğinizle doldurmak için Dokümanlar Aracıları komut dosyasının nasıl kullanılacağını kapsamaktadır.

Metin yerleştirilmiş öğeler oluşturmak ve vektör veritabanını doldurmak için:

  1. docs-agent proje dizinine gidin:
    cd docs-agent/
    
  2. agent populate komutunu kullanarak vektör veritabanını içeriğinizle doldurun:
    agent populate
    

Bu komut dosyası, metin yerleştirme vektörleri oluşturmak için Google Gemini API'sini kullanır ve ardından çıktıyı vektör veritabanına kaydeder. İçeriğinizin işlenmesi, içeriğinizin boyutuna bağlı olarak biraz zaman alabilir.

Diğer biçimleri işleme

Dokümanlar Aracısı projesi, Markdown biçimindeki web sitesi içeriğiyle çalışacak şekilde tasarlanmıştır. Proje yazarları Google Dokümanlar, Taşınabilir Doküman Biçimi (PDF) ve Gmail dahil olmak üzere diğer içerik türlerini Markdown biçiminde oluşturmak için birkaç dönüştürücü komut dosyası oluşturmuştur. Bu dönüştürücüleri kullanma hakkında daha fazla bilgi için kod deposunun docs-agent/apps_script dizinine bakın.

Diğer içerik biçimlerini dönüştürme

Projede başka içerik formatları da kullanabilirsiniz, ancak bu ek yöntemlerin sizin veya topluluğun diğer üyeleri tarafından oluşturulması gerekir. Benzer çözümler geliştiren kişiler için kod deposunun Sorunlar ve Pull İstekleri'ni kontrol edin.

Diğer içerik biçimlerini desteklemek için oluşturmanız gereken anahtar kod, files_to_plain_text.py komut dosyası gibi bir ayırıcı komut dosyasıdır. Bu komut dosyasına benzer çıktılar oluşturan bir komut dosyası veya program oluşturmayı hedefleyin. Nihai metin çıkışının minimum biçimlendirmeye ve gereksiz bilgilere sahip olması gerektiğini unutmayın. HTML veya JSON gibi içerik biçimleri kullanıyorsanız bilgi amaçlı olmayan biçimlendirmeyi (etiketler, komut dosyası, CSS) mümkün olduğunca çok çıkardığınızdan emin olun. Böylece, bu biçimlerden oluşturduğunuz metin yerleştirmelerinin değerlerini saptırmış olmazsınız.

İçerik biçimi için bir ayırıcı komut dosyası oluşturduktan sonra, vektör veritabanınızı doldurmak için populate_vector_database.py komut dosyasını çalıştırabilmeniz gerekir. Dokümanlar Aracısı ile kullanılacak dosya işleme hakkında daha fazla bilgi edinmek için Dokümanlar Aracısı Benim Okuma bölümünü inceleyin.

Uygulamayı test etme

Vektör veritabanınızı doldurmayı tamamladığınızda projeniz test edilmeye hazır hale gelir. Proje, projeyi yerel olarak çalıştırmanızı sağlayacak bir paketleme işlevi sağlar.

Proje web arayüzünü çalıştırmak ve test etmek için:

  1. docs-agent proje dizinine gidin:
    cd docs-agent/
    
  2. Web uygulaması başlatma komut dosyasını çalıştırın:
    agent chatbot
    
  3. Web tarayıcınızı kullanarak başlatma komut dosyasının çıkışında gösterilen URL web adresine gidin ve uygulamayı test edin.
    * Running on http://your-hostname-here:5000
    

Uygulama seçenekleri

Gemini API, Dokümanlar Aracısı uygulamasının bileşenlerinin, özellikle de Semantik Alma ve İlişkilendirilen Soru Yanıtlama (AQA) Gemini model varyantının yerini alabilecek programlama araçları sağlar. Ayrı vektör veritabanını değiştirmek için Gemini API'nin Semantic Retrieval özelliğini kullanabilirsiniz. Semantik Alma özelliği, içeriğiniz için yerleştirmeler oluşturmanıza ve bu içeriği depolamanıza olanak tanır. AQA Gemini modeli, soruları istemde sağlanan kaynak materyalle yanıtlamak için ayarlanmıştır. Semantik Alma özelliğini, Gemini API'de içeriğinizle ilgili soruları yanıtlamak için AQA modeliyle birlikte kullanırsınız.

Dokümanlar Aracısı, Semantic Retrieval API özelliğini, söz konusu AQA Gemini modelini veya ikisini birden kullanmak için yapılandırma seçenekleri içerir. Daha fazla bilgi için Dokümanlar Aracısı Okuma'ya göz atın.

Ek kaynaklar

Dokümanlar Aracısı projesi hakkında daha fazla bilgi için kod deposuna bakın. Uygulamayı oluşturma konusunda yardıma ihtiyacınız varsa veya geliştirici olarak ortak çalışma yapacak kişiler arıyorsanız Google Developers Community Discord sunucusuna göz atın.

Üretim uygulamaları

Dokümanlar Aracısı'nı geniş bir kitle için dağıtmayı planlıyorsanız Google Gemini API kullanımınızın hız sınırlamasına ve diğer kullanım kısıtlamalarına tabi olabileceğini unutmayın. Dokümanlar Agent gibi Gemini API ile bir üretim uygulaması derlemeyi düşünüyorsanız uygulamanızın ölçeklenebilirliğini ve güvenilirliğini artırmak için Google Cloud Vertex AI hizmetlerine göz atın.