Skip to main content

open

Function open 

Source
pub fn open(path: impl AsRef<Path>) -> Result<Store>
Expand description

Opens or creates a persistent embedded vector database.

Existing bare and non-bare Git repositories are opened as-is. A missing path or existing empty directory is initialized as a bare repository. Existing nonempty directories that are not Git repositories are rejected.

Examples found in repository?
examples/persistence.rs (line 6)
3fn main() -> git_vdb::Result<()> {
4    let temporary = tempfile::TempDir::new()?;
5    let path = temporary.path().join("vectors.git");
6    open(&path)?
7        .collection("docs")
8        .upsert([Point::new("stable-id", [1.0, 0.0])])?;
9    assert_eq!(open(&path)?.collection("docs").count()?, 1);
10    Ok(())
11}
More examples
Hide additional examples
examples/history.rs (line 5)
3fn main() -> git_vdb::Result<()> {
4    let temporary = tempfile::TempDir::new()?;
5    let docs = open(temporary.path().join("vectors.git"))?.collection("docs");
6    docs.upsert([Point::new("v1", [1.0, 0.0])])?;
7    docs.upsert([Point::new("v2", [0.0, 1.0])])?;
8    assert_eq!(docs.advanced()?.history(10)?.len(), 3);
9    Ok(())
10}
examples/quickstart.rs (line 5)
3fn main() -> git_vdb::Result<()> {
4    let temporary = tempfile::TempDir::new()?;
5    let db = open(temporary.path().join("vectors.git"))?;
6    let docs = db.collection("docs");
7    docs.upsert([
8        Point::new("east", [1.0, 0.0]),
9        Point::new("north", [0.0, 1.0]),
10    ])?;
11    let hits = docs.search([0.9, 0.1], 1)?;
12    assert_eq!(hits[0].id.to_string(), "east");
13    Ok(())
14}
examples/text.rs (line 27)
25fn main() -> git_vdb::Result<()> {
26    let temporary = tempfile::TempDir::new()?;
27    let db = open(temporary.path().join("documents.git"))?;
28    let docs = db.text_collection("docs", ExampleEmbedder)?;
29    docs.upsert_documents([
30        Document::new("east", "A document about the east"),
31        Document::new("north", "A document about the north"),
32    ])?;
33    assert_eq!(
34        docs.search_text("north wind", 1)?[0].id.to_string(),
35        "north"
36    );
37    Ok(())
38}
examples/text_fastembed.rs (line 7)
5fn main() -> git_vdb::Result<()> {
6    let temporary = tempfile::TempDir::new()?;
7    let db = open(temporary.path().join("documents.git"))?;
8    let docs = db.text_collection("docs", FastEmbedder::try_new()?)?;
9    docs.upsert_documents([
10        Document::new("git", "Git-native vector search"),
11        Document::new("fruit", "Fresh fruit at the market"),
12    ])?;
13    let hits = docs.search_text("versioned database search", 1)?;
14    println!("{}", hits[0].id);
15    Ok(())
16}
examples/filtering.rs (line 6)
4fn main() -> git_vdb::Result<()> {
5    let temporary = tempfile::TempDir::new()?;
6    let docs = open(temporary.path().join("vectors.git"))?.collection("docs");
7    docs.upsert([
8        Point::new("guide", [1.0, 0.0]).with_metadata(json!({"kind": "docs"}))?,
9        Point::new("code", [0.9, 0.1]).with_metadata(json!({"kind": "source"}))?,
10    ])?;
11    let result = docs.advanced()?.query(
12        Query::new([1.0, 0.0], 5)
13            .with_filter(Filter::must([Condition::matches("kind", "docs")]))
14            .with_payload(),
15    )?;
16    assert_eq!(result.points[0].id.to_string(), "guide");
17    Ok(())
18}