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

Bir markdown dosyasından bilgi tabanı

Bu bölümde, bir markdown dosyasından bir vektör koleksiyonu anlık görüntüsünün nasıl oluşturulacağını tartışacağız. Bu bölümde anlık görüntü dosyası daha sonra bir Gaia düğümü tarafından bilgi tabanı olarak yüklenebilir.

Markdown dosyası başlıklara göre birden fazla bölüme ayrılmıştır. Bir örneğe bakın. Her bölüm bir vektöre dönüştürülür ve alınır, LLM için istem bağlamına eklenir.

Ö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
}
}'

Markdown belgesini bölümlere ayırmak ve katıştırmalar oluşturmak için bir program indirin.

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

Belgeyi markdown bölümlerine göre parçalara ayırır. Rust kaynak koduna buradan göz atabilir ve farklı bir parçalama stratejisi kullanmanız gerekiyorsa değiştirebilirsiniz.

Ardından, bir koleksiyon adı, vektör boyutu ve kaynak belge girerek programı çalıştırabilirsiniz. Yığınlama için istediğiniz markdown başlık düzeyini --heading_level seçeneği. Bu seçenek --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.md ve bunları varsayılan koleksiyona kaydeder.

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

wasmedge --dir .:. \
--nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \
markdown_embed.wasm embedding default 768 paris.md --heading_level 1 --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 -l veya --heading_level her vektör için markdown başlık seviyesini belirtmek için. Bu varsayılan olarak 1'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 \
markdown_embed.wasm embedding default 768 london.md -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

İyi eğlenceler!