Ana içeriğe geç
Sürüm: 2.0.0

Kaynak / özet çiftlerinden bilgi tabanı

Bu bölümde, uzun biçimli metin belgelerinin en iyi şekilde alınması için bir vektör koleksiyonu anlık görüntüsünün nasıl oluşturulacağını tartışacağız. Yaklaşım, bir CSV dosyasında iki metin sütunu oluşturmaktır.

  • İlk sütun, bir kitap bölümü veya bir markdown bölümü gibi bilgi belgesinden alınan uzun biçimli kaynak metindir.
  • Uzun biçimli kaynak metinde arama yapmak zordur. İkinci sütun kaynak metnin "arama dostu" bir özetidir. Birinci sütun kaynak metin tarafından yanıtlanabilecek soruların bir listesini içerebilir.

Her vektörün özet metinden (ikinci sütun) hesaplandığı, ancak bu vektör için alınan kaynak metnin ilk sütundan olduğu bir vektör anlık görüntüsü oluşturacağız. Anlık görüntü dosyası daha sonra bir Gaia düğümü tarafından bilgi tabanı olarak yüklenebilir.

Bir dizi makale veya bölümden düzgün biçimlendirilmiş CSV dosyaları oluşturmak için basit bir Python betiğimiz var. Nasıl çalıştığını görün.

Ön Koşullar

Platformlar arası LLM çalışma zamanı olan WasmEdge Runtime'ı yükleyin.

curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s

Bir yerleştirme modeli indirin.

curl -LO https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf

Gömme modeli, cümleleri vektörlere dönüştüren özel bir LLM türüdür. Vektörler daha sonra bir vektör veritabanında saklanabilir ve daha sonra aranabilir. Cümleler bir bilgi alanını temsil eden bir metin gövdesinden olduğunda, bu vektör veritabanı bizim RAG bilgi tabanımız haline gelir.

Bir vektör veritabanı başlatın

Varsayılan olarak, vektör veritabanı olarak Qdrant kullanırız. Bir Qdrant örneği başlatabilirsiniz bir Gaia düğümünü bir bilgi anlık görüntüsü ile başlatarak.

Not

Ya da Docker kullanarak bir Qdrant sunucusu başlatabilirsiniz. Aşağıdaki komut onu arka planda başlatır.

mkdir qdrant_storage
mkdir qdrant_snapshots

nohup docker run -d -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
-v $(pwd)/qdrant_snapshots:/qdrant/snapshots:z \
qdrant/qdrant

Vektör koleksiyonu anlık görüntüsünü oluşturma

Varsa varsayılan koleksiyonu silin.

curl -X DELETE 'http://localhost:6333/collections/default'

Default adında yeni bir koleksiyon oluşturun. 768 boyutlu olduğuna dikkat edin. Bu, gömme modelinin çıktı vektörü boyutudur nomic-embed-text-v1.5. Farklı bir gömme modeli kullanıyorsanız, modele uygun bir boyut kullanmalısınız.

curl -X PUT 'http://localhost:6333/collections/default' \
-H 'Content-Type: application/json' \
--data-raw '{
"vectors": {
"size": 768,
"distance": "Cosine",
"on_disk": true
}
}'

CSV dosyasından katıştırmalar oluşturmak için bir program indirin.

curl -LO https://github.com/GaiaNet-AI/embedding-tools/raw/main/csv_embed/csv_embed.wasm

Rust kaynak koduna buradan göz atabilir ve farklı bir CSV düzeni kullanmanız gerekiyorsa değiştirebilirsiniz.

Ardından, bir koleksiyon adı, vektör boyutu ve CSV belgesini ileterek programı çalıştırabilirsiniz. Program --ctx_size seçeneği, gömme modelinin bağlam penceresi boyutuyla eşleşir; bu durumda 8192 belirteç, uzun metin bölümlerini işlemesine olanak tanır. Qdrant'ın yerel makinenizde çalıştığından emin olun. Model embedding adı altında önceden yüklenmiştir. Wasm uygulaması daha sonra 768 boyutlu vektörleri oluşturmak için gömme modelini kullanır paris.csv ve bunları varsayılan koleksiyona kaydeder.

curl -LO https://huggingface.co/datasets/gaianet/paris/raw/main/paris.csv

wasmedge --dir .:. \
--nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \
csv_embed.wasm gömme varsayılan 768 paris.csv --ctx_size 8192

Seçenekler

Aşağıdaki seçenekleri programa aktarabilirsiniz.

  • Kullanma -c veya --ctx_size girdinin bağlam boyutunu belirtmek için. Bu varsayılan olarak 512'dir.
  • Kullanma -m veya --maximum_context_length CLI argümanında bir bağlam uzunluğu belirtmek için. Bu, bağlam uzunluğunu aşan her metin parçası için kesmek ve uyarmaktır.
  • Kullanma -s veya --start_vector_id CLI argümanında başlangıç vektör kimliğini belirtmek için. Bu, bu uygulamayı aynı vektör koleksiyonundaki birden çok belge üzerinde birden çok kez çalıştırmamıza olanak tanıyacaktır.

Örnek: yukarıdaki örnek ancak Londra rehberini 42. dizinden başlayarak mevcut bir koleksiyonun sonuna eklemek için.

wasmedge --dir .:. \
--nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \
csv_embed.wasm embedding default 768 london.csv -c 8192 -l 1 -s 42

Vektör anlık görüntüsü oluşturma

Koleksiyonun paylaşılabilen ve farklı bir Qdrant veritabanına yüklenebilen bir anlık görüntüsünü oluşturabilirsiniz. Anlık görüntü dosyasını şurada bulabilirsiniz qdrant_snapshots dizini veya ~/gaianet/qdrant/snapshots Gaia düğümündeki dizin.

curl -X POST 'http://localhost:6333/collections/default/snapshots'

Ayrıca anlık görüntü dosyasını sıkıştırmanızı da öneririz.

tar czvf my.snapshot.tar.gz my.snapshot

Son olarak, yükleyin my.snapshot.tar.gz dosyasının Huggingface'e aktarılması için Gaia node indirebilir ve kullanabilir.

Sonraki adımlar