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

Bilgi aramak, üretken yapay zeka (AI) modellerinin en yaygın kullanım alanlarından biridir. Yapay zeka kullanarak 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ğitimde, içeriğiniz için yapay zeka destekli, sohbet tabanlı bir arama arayüzü oluşturma hakkında bilgi verilmektedir. Dokümanlar Asistanı'nı temel alır. Bu açık kaynak proje, yeni bir yapay zeka modeli eğitmeden veya Gemini modelleriyle model ayarı yapmadan sohbet arama arayüzü oluşturmak için Google Gemini API'yi kullanır. Bu sayede bu arama özelliğini hızlıca oluşturabilir ve küçük ve büyük içerik kümeleri için kullanabilirsiniz.

Projenin geliştiricilerinden alınan analizler de dahil olmak üzere projeye ve nasıl genişletileceğine dair videolu genel bakış için Yapay Zeka İçerik Arama | Google Yapay Zeka ile Geliştirme başlıklı makaleyi inceleyin. Aksi takdirde, aşağıdaki talimatları uygulayarak projeyi genişletmeye başlayabilirsiniz.

Genel Bakış

Docs Agent projesi, Google Gemini API ve üretken modeller tarafından desteklenen belirli bir içerik grubu için sohbet tabanlı bir arama arayüzü sağlar. Kullanıcılar, sohbet tarzında ayrıntılı bir soru sorabilir ve belirli bir içerik grubuna göre ayrıntılı bir yanıt alabilir. Arka planda, Dokümanlar Asistanı soruyu alır ve içeriğin vektör veritabanında arama yapar. Ardından, üretken model için alakalı metin snippet'leri içeren ayrıntılı bir istem oluşturur. Üretken model, soruya bir yanıt oluşturur ve Dokümanlar temsilcisi yanıtı biçimlendirip kullanıcıya sunar.

Dokümanlar temsilcisinin işlevsel şeması Şekil 1. Dokümanlar temsilcisi proje uygulamasının işlevsel şeması.

Docs temsilcisinin içeriğinizle ilgili soruları yanıtlayabilmesi için bu içeriğin vektör veritabanı oluşturulması gerekir. İçeriğinizi mantıksal metin parçalarına ayırır ve her biri için bir vektör oluşturursunuz. Bu vektörler, her bir parçadaki bilgilerin sayısal gösterimlerini içerir ve Google'ın üretken modellerinden alınan bir yapay zeka metin yerleştirme işleviyle oluşturulur.

Kullanıcı bir soru sorduğunda Dokümanlar Asistanı, söz konusu sorunun sayısal bir temsilini oluşturmak için aynı metin yerleştirme işlevini kullanır ve bu değeri kullanarak vektör veritabanında arama yapar ve ilgili içeriği bulur. En iyi sonuçları alır ve bu bilgileri üretken model için bir istem kutusuna ekler. Yapay zeka modeli, soruyu ve ek bağlam bilgilerini alarak bir yanıt oluşturur.

Proje ayarlama

Bu talimatlar, Docs Agent projesini geliştirme ve test için ayarlama konusunda size yol gösterir. Genel adımlar arasında bazı ön koşul yazılımlarını yükleme, birkaç ortam değişkeni ayarlama, projeyi kod deposundan klonlama ve yapılandırma yüklemesini çalıştırma yer alır. Kod projesi, paketleri ve Python çalışma zamanı ortamını yönetmek için Python Poetry'yi kullanır.

Gerekli ön koşulları yükleme

Dokümanlar temsilcisi projesi, paketleri yönetmek ve uygulamayı çalıştırmak için Python 3 ve Python Poetry'yi kullanır. Aşağıdaki yükleme talimatları, Linux ana makine 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ı 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ı için gereken birkaç ortam değişkenini (ör. Google Gemini API anahtarı ve Python Poetry ayarı) 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 ekleyebilirsiniz.

Ortam değişkenlerini ayarlamak için:

  1. Google Gemini API anahtarı alın ve anahtar dizesini kopyalayın.
  2. API anahtarını bir 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 Poetry ile ilgili bilinen bir sorunu çözme. 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 ve gerekli bağımlılıkları indirip projeyi yapılandırmak için Poetry yükleme komutunu kullanın. Projenin kaynak kodunu almak için git kaynak denetimi yazılımına ihtiyacınız vardır. Proje kodunu indirip 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 seyrek kontrol kullanacak şekilde yapılandırarak yalnızca Dokümanlar temsilcisi projesinin dosyalarına sahip olabilirsiniz.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. docs-agent proje kök dizinine gidin.
    cd examples/gemini/python/docs-agent/
    
  4. Bağımlılıkları indirmek ve projeyi yapılandırmak için Poetry install komutunu çalıştırın:
    poetry install
    

İçerik hazırlama

Docs Agent 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 bu içeriği eşlemesi ve bağlantı oluşturması için yayınlanan web sitesinin dizin yapısını korumanız (veya kopyalamanız) gerekir.

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

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

  1. Yapay zeka temsilcisinin 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 yayınlanan web sitesinin dizin yapısını koruyun (veya kopyalayın).
  3. Herkese açık olmayan bilgileri veya aramalara dahil edilmesini istemediğiniz diğer bilgileri kaldırmak için içeriği gerektiği gibi temizleyin ya da düzenleyin.

Test için Flutter dokümanlarını kullanma

Docs aracısını test etmek için bir içerik grubuna ihtiyacınız varsa test için Flutter geliştirici dokümanlarını kullanabilirsiniz.

Flutter geliştirici belgelerini almak için:

  1. Yapay zeka aracısının arama yapmasını istediğiniz içeriğin içerik dizine gidin.
    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
    

İçerikleri işleme

Arama aracısının, kullanıcıların sorularıyla ilgili içeriği etkili bir şekilde arayabilmesi için içeriğinizi temsil eden bir vektör veritabanı oluşturmanız gerekir. Vektörler, metin yerleştirme adlı bir yapay zeka üretken model işlevi kullanılarak oluşturulur. Metin yerleştirmeleri, metin içeriğinin sayısal gösterimidir. Metnin anlamsal anlamını bir sayı kümesi olarak yaklaşık olarak belirtir. Bilgilerin sayısal gösterimlerinin olması, sistemin kullanıcının sorusunu almasına, aynı metin yerleştirme işlevini kullanarak anlamını yaklaşık olarak belirlemesine ve ardından k en yakın komşu (k-NN) algoritmasını kullanarak ilgili bilgileri matematiksel bir hesaplama olarak bulmasına olanak tanır.

Metin içeriğini bölme

Metin yerleştirme vektörünün etkili bir şekilde temsil edebileceği metin miktarı sınırlıdır. Bu proje, bir vektörde temsil edilen metni 3.000 karakter veya daha az olacak şekilde sınırlandırır. Bu da içeriğinizi bu karakter sınırının altındaki parçalara ayırmanız gerektiği anlamına gelir. Bu bölümde, Markdown dosyalarını daha küçük metin parçalarına bölmek için Docs Agent projesiyle birlikte sağlanan komut dosyasının nasıl kullanılacağı açıklanmaktadır. Diğer içerik biçimleriyle çalışmayla ilgili ipuçları için Diğer biçimleri işleme başlıklı makaleyi inceleyin.

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 dokümanlarının bir alt kümesini hedefler:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
  2. Değişikliklerinizi bu yapılandırma dosyasına 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 metni başlıklar, alt başlıklar ve ilgili paragraflara göre bölerek docs-agent/data dizininde çıkış metin dosyaları oluşturur. İşleme, içeriğinizin boyutuna bağlı olarak biraz zaman alabilir.

Metin gömme vektörleri oluşturma

İçeriğinizi uygun boyutta, anlamlı parçalara ayırdıktan sonra bir metin yerleştirme işlevi kullanarak vektör veritabanını içeriğinizle doldurabilirsiniz. Docs Agent projesi, metin yerleştirme vektörlerini depolamak için Chroma vektör veritabanını kullanır. Bu talimatlar, bölünmüş içeriğinizle bir vektör veritabanını doldurmak için Dokümanlar Temsilcileri komut dosyasının nasıl kullanılacağını kapsar.

Metin gömmeleri oluşturmak ve vektör veritabanını doldurmak için:

  1. docs-agent proje dizinine gidin:
    cd docs-agent/
    
  2. agent populateKomutunu 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'yi kullanır ve ardından çıktıyı vektör veritabanına kaydeder. İşleme, içeriğinizin boyutuna bağlı olarak biraz zaman alabilir.

Diğer biçimleri işleme

Dokümanlar temsilcisi projesi, Markdown biçimindeki web sitesi içerikleriyle çalışacak şekilde tasarlanmıştır. Projenin yazarları, Google Dokümanlar, Taşınabilir Belge Biçimi (PDF) ve Gmail gibi diğer içerik türlerini Markdown biçiminde oluşturmak için birkaç dönüştürücü komut dosyası oluşturdu. 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

Projeyle birlikte başka içerik biçimleri de kullanabilirsiniz ancak bu ek yöntemlerin sizin tarafınızdan veya topluluğun diğer üyeleri tarafından oluşturulması gerekir. Benzer çözümler geliştiren kişiler için kod deposundaki Sorunlar ve Alma İstekleri'ni kontrol edin.

Diğer içerik biçimlerini desteklemek için oluşturmanız gereken anahtar kodu, files_to_plain_text.py kodunda olduğu gibi bir ayırıcı komut dosyasıdır. Bu komut dosyasıyla benzer bir çıkış oluşturan bir komut dosyası veya program oluşturmayı hedefleyin. Nihai metin çıktısında minimum düzeyde biçimlendirme ve ek bilgi bulunması gerektiğini unutmayın. HTML veya JSON gibi içerik biçimleri kullanıyorsanız bunlardan oluşturduğunuz metin yerleştirilmelerinin değerlerini çarpıtmaması için bilgi içermeyen biçimlendirmeyi (etiketler, komut dosyaları, CSS) mümkün olduğunca kaldırdığınızdan emin olun.

İç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ırabilirsiniz. Docs Agent ile kullanılacak dosyaları işleme hakkında daha fazla bilgi için Docs Agent Ön İşleme Hazırlama Kılavuzu'na bakın.

Uygulamayı test etme

Vektör veritabanınızı doldurmayı tamamladığınızda proje test edilmeye hazırdır. Proje, yerel olarak çalıştırmanıza olanak tanıyan 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 çıktısında gösterilen URL web adresine gidin ve uygulamayı test edin.
    * Running on http://your-hostname-here:5000
    

Uygulama seçenekleri

Gemini API, Docs temsilcisi uygulamasının bileşenlerini (özellikle de anlamsal arama ve ilişkilendirilmiş soru yanıtlama (AQA) Gemini model varyantını) değiştirebilecek programlama araçları sağlar. Ayrı vektör veritabanını değiştirmek için Gemini API'nin Anlamsal Arama özelliğini kullanabilirsiniz. Anlamsal 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, istemde sağlanan kaynak materyalle soruları yanıtlamak için ayarlanmıştır. Gemini API'de içeriğinizle ilgili soruları yanıtlamak için AQA modeliyle birlikte Anlamsal Alma özelliğini kullanırsınız.

Docs aracısı, Semantic Retrieval API özelliğini, AQA Gemini modelini veya ikisini birden kullanmaya yönelik yapılandırma seçenekleri içerir. Daha fazla bilgi için Docs Agent Readme dosyasını inceleyin.

Ek kaynaklar

Docs Agent projesi hakkında daha fazla bilgi için kod deposuna bakın. Uygulamayı oluşturma konusunda yardıma ihtiyacınız varsa veya birlikte çalışabileceğiniz geliştiriciler arıyorsanız Google Developers Community Discord sunucusuna göz atın.

Üretim uygulamaları

Dokümanlar Asistanı'nı geniş bir kitle için dağıtmayı planlıyorsanız Google Gemini API'yi kullanımınız sıklık sınırlamasına ve diğer kullanım kısıtlamalarına tabi olabilir. Gemini API ile Docs Agent gibi bir üretim uygulaması oluşturmayı 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.