Kaynak / özet çiftlerinden bilgi tabanı
Bu bölümde, en uygun erişim için bir vektör koleksiyonu anlık görüntüsünün nasıl oluşturulacağını tartışacağız. uzun biçimli metin belgeleri. 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ığı bir vektör anlık görüntüsü oluşturacağız, ancak Bu vektör için alınan kaynak metin ilk sütundandır. 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.
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
- Yeni bir Gaia düğümü başlatın
- Gaia düğümünü özelleştirin
İyi eğlenceler!