Eine Datei
Eine Datenbank ist eine einzige Datei, die du kopieren, sichern oder mit deiner Anwendung ausliefern kannst. Speichern ist atomar, und jede Datei wird beim Öffnen per CRC32 geprüft.
Recern Vector ist eine eingebettete Vektordatenbank nach dem Vorbild von SQLite. Sie läuft in deiner Anwendung, speichert alles in einer Datei und zeigt dir, wie jede Suche ausgeführt wurde. Wir entwickeln sie parallel zum Recern Workspace.
pip install recern-vectorRelease-Notes zu v0.0.1 faiss-HNSW-Durchsatz bei Recall 0,95 auf SIFT1M
derselbe Vergleich auf GloVe-100
um eine Million Vektoren auf 14 Kernen zu indexieren
Median-Latenz pro Abfrage bei Recall 0,983 auf SIFT1M
Eine Datenbank ist eine einzige Datei, die du kopieren, sichern oder mit deiner Anwendung ausliefern kannst. Speichern ist atomar, und jede Datei wird beim Öffnen per CRC32 geprüft.
Recern Vector ist eine Bibliothek, die in deinem Prozess läuft – mit Bindings für Rust und Python und einem Kommandozeilen-Tool. Nichts zu deployen, zu konfigurieren oder am Laufen zu halten.
Jede Suche kann ihre Strategie, die besuchten Knoten, die Selektivität des Filters und ihre Dauer melden. Statistiken zeigen Graph-Ebenen, Speicherverbrauch und Datensätze, die keine Suche erreicht, und den Recall misst du auf deinen eigenen Daten.
Dieselbe Datenbank aus Python und von der Kommandozeile. Die Ausgabe rechts stammt aus einem echten Lauf mit 20.000 Datensätzen und einem Metadaten-Filter.
import recern_vector as rv
db = rv.Database.open_or_create("docs.rvec")
docs = db.create_collection("docs", dim=384, metric="cosine")
docs.upsert_many(ids, embeddings, metadatas)
hits = docs.search(query, k=5, filter={"lang": "en"})
docs.explain(query, k=5) # strategy, visited nodes, time$ recern-vector query docs.rvec docs --like doc-42 -k 3 \
--filter '{"lang": "en", "year": {"$gte": 2020}}' \
--explain
# id distance metadata
1 doc-42 -0.00000 {"lang":"en","year":2024}
2 doc-18861 0.63155 {"lang":"en","year":2022}
3 doc-10899 0.63834 {"lang":"en","year":2024}
strategy hnsw
ef 64
selectivity ~19.9% of records match the filter
visited 7,244 nodes
distances 7,330 computed
time 529 µsDie Python-Bindings übernehmen NumPy-float32-Arrays, ohne einzelne Elemente umzuwandeln. Batch-Inserts bauen den Index auf allen Kernen.
Ein Graph-Index mit m, ef_construction und ef_search pro Collection und ein exakter Scan, wenn du die Ground Truth brauchst.
Jede Collection hat eine feste Dimension und Metrik. Kosinus-Vektoren werden beim Speichern normalisiert.
Gleichheit, $in und Bereiche im MongoDB-Stil. Trifft ein Filter nur sehr wenige Datensätze, wechselt die Abfrage zu einem exakten Scan.
Batch-Inserts bauen den Index auf allen Kernen. Ist ein Vektor ungültig, wird nichts geschrieben.
Ersetze oder lösche Datensätze per ID und baue die Collection mit compact ohne gelöschte Datensätze neu auf.
stats(), explain() und estimate_recall() sind Teil der API, kein separates Tool.
Ein PyO3-Wheel für CPython 3.11 und neuer, mit Typ-Hinweisen.
init, create-collection, insert, query, inspect, recall und compact.
Eine Abfrage nach der anderen aus Python auf Apple M3 Max, darunter jeweils die Median-Latenz. Der vollständige Bericht behandelt auch Indexaufbau, Größe auf der Festplatte, Methode und Einschränkungen.
| Engine | SIFT1M | GloVe-100 |
|---|---|---|
| Recern VectorHNSW | 9.0410,11 ms | 6351,60 ms |
| faissHNSWFlat | 6.9610,15 ms | 3562,83 ms |
| LanceDBIVF_HNSW_SQ | 7311,34 ms | nicht erreicht |
| LanceDBIVF_PQ, tuned | 2454,03 ms | 1675,93 ms |
| sqlite-vecexact scan | 1283,79 ms | 7140,43 ms |
Derzeit wird die ganze Datenbank im Arbeitsspeicher gehalten, beim Speichern wird die Datei neu geschrieben, und das Dateiformat kann sich noch ändern. Installation mit pip install recern-vector oder cargo add recern-vector; bis das Format stabil ist, bleiben die Versionen bei 0.0.x.
Recern ist ein Desktop-Workspace, um Datenbanken zu verstehen. Er wird auch die Vektorsuche in Datenbanken erklären, die du bereits betreibst, etwa pgvector und Redis. Recern Vector ist ein separates Begleitprojekt und nicht Teil der Private Alpha des Workspace.
Der Private Alpha des Workspace beitreten