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?
More examples
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}