fvdb ist ein einfacher, minimaler Wrapper um die Faiss -Vektor -Datenbank. Es verwendet einen L2 -Index mit normalisierten Vektoren.
Es verwendet das faiss-cpu Paket und sentence-transformers für Einbettungen. Wenn Sie die GPU-Version von FAISS (sehr wahrscheinlich nicht) benötigen, können Sie faiss-gpu einfach manuell installieren und GPUIndexFlatL2 anstelle von IndexFlatL2 in fvdb/db.hy verwenden. Sie können weiterhin ein GPU-Texteinbettungsmodell verwenden, auch wenn Sie faiss-cpu verwenden.
Wenn Zusammenfassungen aktiviert sind ( nicht die Standardeinstellung, siehe Konfigurationsabschnitt unten), wird eine Zusammenfassung des Extrakts neben dem Extrakt gespeichert.
Es passt gut zu Trag.
Jede andere Eingabe als einfacher Text (Markus, Asciidoc, RST, Quellcode usw.) ist nicht mehr in den Rahmen . Sie sollten eines der vielen verfügbaren Pakete (unstrukturiert, trafiltura, Docling usw.) in einem separaten Schritt in Klartext konvertieren.
import hy # fvdb is written in Hy, but you can use it from python too
from fvdb import faiss , ingest , similar , sources , write
# data ingestion
v = faiss ()
ingest ( v , "doc.md" )
ingest ( v , "docs-dir" )
write ( v , "/tmp/test.fvdb" ) # defaults to $XDG_DATA_HOME/fvdb (~/.local/share/fvdb/ on Linux)
# search
results = similar ( v , "some query text" )
results = marginal ( v , "some query text" ) # not yet implemented
# information, management
sources ( v )
{ ...
'docs-dir/Once More to the Lake.txt' ,
'docs-dir/Politics and the English Language.txt' ,
'docs-dir/Reflections on Gandhi.txt' ,
'docs-dir/Shooting an elephant.txt' ,
'docs-dir/The death of the moth.txt' ,
... }
info ( v )
{ 'records' : 42 ,
'embeddings' : 42 ,
'embedding_dimension' : 1024 ,
'is_trained' : True ,
'path' : '/tmp/test-vdb' ,
'sources' : 24 ,
'embedding_model' : 'Alibaba-NLP/gte-large-en-v1.5' }
nuke ( v )Diese sind auch in der Befehlszeile erhältlich.
$ # defaults to $XDG_DATA_HOME/fvdb (~/.local/share/fvdb/ on Linux)
# data ingestion (saves on exit)
$ fvdb ingest doc.md
Adding 2 records
$ fvdb ingest docs-dir
Adding 42 records
$ # search
$ fvdb similar -j " some query text " > results.json # --json / -j gives json output
$ fvdb similar -r 2 " George Orwell's formative experience as a policeman in colonial Burma "
# defaults to tabulated output (not all fields will be shown)
score source added page length
-------- ---------------------------------- -------------------------------- ------ --------
0.579925 docs-dir/A hanging.txt 2024-11-05T11:37:26.232773+00:00 0 2582
0.526988 docs-dir/Shooting an elephant.txt 2024-11-05T11:37:43.891659+00:00 0 3889
$ fvdb marginal " some query text " # not yet implemented
$ # information, management
$ fvdb sources
...
docs-dir/Once More to the Lake.txt
docs-dir/Politics and the English Language.txt
docs-dir/Reflections on Gandhi.txt
docs-dir/Shooting an elephant.txt
docs-dir/The death of the moth.txt
...
$ fvdb info
------------------- -----------------------------
records 44
embeddings 44
embedding_dimension 1024
is_trained True
path /tmp/test
sources 24
embedding_model Alibaba-NLP/gte-large-en-v1.5
------------------- -----------------------------
$ fvdb nuke Sucht nach $XDG_CONFIG_HOME/fvdb/conf.toml , ansonsten verwendet Standards.
Sie können Emettdings -Modelle nicht in einem einzigen FVDB mischen.
Hier ist ein Beispiel.
# Sets the default path to something other than $XDG_CONFIG_HOME/fvdb/conf.toml
path = " /tmp/test.fvdb "
# Summaries are useful if you use an embedding model with large maximum sequence length,
# for example, gte-large-en-v1.5 has maximum sequence length of 8192.
summary = true
# A conservative default model, maximum sequence length of 512,
# so no point using summaries.
embeddings.model = " all-mpnet-base-v2 "
# # Some models need extra options
# embeddings.model = "Alibaba-NLP/gte-large-en-v1.5"
# embeddings.trust_remote_code = true
# # You can put some smaller models on a cpu, but larger models will be slow
# embeddings.device = "cpu" Installieren Sie zuerst Pytorch, die von sentence-transformers verwendet wird. Sie müssen entscheiden, ob Sie die CPU- oder CUDA -Version (NVIDIA GPU) von Pytorch haben möchten. Für nur Texteinbettungen für fvdb ist die CPU mit dem Standardmodell ausreichend.
Dann,
pip install fvdbUnd das war's.