mirror of
https://github.com/lancedb/lancedb.git
synced 2026-09-03 12:08:52 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a29ac2617 |
@@ -34,36 +34,6 @@ const results = await table.vectorSearch([0.1, 0.3]).limit(20).toArray();
|
||||
console.log(results);
|
||||
```
|
||||
|
||||
### Use an Existing Table with LangChain
|
||||
|
||||
When wrapping an existing table with `@langchain/community`, open the table
|
||||
with LanceDB and pass the resulting table handle to LangChain. The LangChain
|
||||
`uri` and `tableName` options are used when creating a table; they do not open
|
||||
an existing table for search.
|
||||
|
||||
```javascript
|
||||
import { LanceDB as LangChainLanceDB } from "@langchain/community/vectorstores/lancedb";
|
||||
import * as lancedb from "@lancedb/lancedb";
|
||||
|
||||
const db = await lancedb.connect("data/sample-lancedb");
|
||||
const table = await db.openTable("my_table");
|
||||
const vectorStore = new LangChainLanceDB(embeddings, {
|
||||
table,
|
||||
textKey: "item",
|
||||
});
|
||||
|
||||
const documents = await vectorStore.similaritySearch("foo", 5);
|
||||
```
|
||||
|
||||
Affected versions of `@langchain/community` do not map LanceDB's `_distance`
|
||||
column to the score returned by `similaritySearchVectorWithScore`. Query the
|
||||
table directly when you need the numeric vector distance:
|
||||
|
||||
```javascript
|
||||
const results = await table.vectorSearch(queryVector).limit(5).toArray();
|
||||
console.log(results[0]._distance);
|
||||
```
|
||||
|
||||
The [quickstart](https://docs.lancedb.com/quickstart/) contains more complete examples.
|
||||
|
||||
## Development
|
||||
|
||||
@@ -30,36 +30,6 @@ const results = await table.vectorSearch([0.1, 0.3]).limit(20).toArray();
|
||||
console.log(results);
|
||||
```
|
||||
|
||||
### Use an Existing Table with LangChain
|
||||
|
||||
When wrapping an existing table with `@langchain/community`, open the table
|
||||
with LanceDB and pass the resulting table handle to LangChain. The LangChain
|
||||
`uri` and `tableName` options are used when creating a table; they do not open
|
||||
an existing table for search.
|
||||
|
||||
```javascript
|
||||
import { LanceDB as LangChainLanceDB } from "@langchain/community/vectorstores/lancedb";
|
||||
import * as lancedb from "@lancedb/lancedb";
|
||||
|
||||
const db = await lancedb.connect("data/sample-lancedb");
|
||||
const table = await db.openTable("my_table");
|
||||
const vectorStore = new LangChainLanceDB(embeddings, {
|
||||
table,
|
||||
textKey: "item",
|
||||
});
|
||||
|
||||
const documents = await vectorStore.similaritySearch("foo", 5);
|
||||
```
|
||||
|
||||
Affected versions of `@langchain/community` do not map LanceDB's `_distance`
|
||||
column to the score returned by `similaritySearchVectorWithScore`. Query the
|
||||
table directly when you need the numeric vector distance:
|
||||
|
||||
```javascript
|
||||
const results = await table.vectorSearch(queryVector).limit(5).toArray();
|
||||
console.log(results[0]._distance);
|
||||
```
|
||||
|
||||
The [quickstart](https://docs.lancedb.com/quickstart/) contains more complete examples.
|
||||
|
||||
## Development
|
||||
|
||||
@@ -2341,6 +2341,45 @@ def test_merge_insert(mem_db: DBConnection):
|
||||
)
|
||||
|
||||
|
||||
def test_merge_insert_with_null_on_column(mem_db: DBConnection):
|
||||
table = mem_db.create_table(
|
||||
"users",
|
||||
data=pa.table(
|
||||
{
|
||||
"id": [0, 1],
|
||||
"name": ["Alice", "Bob"],
|
||||
"record_type": [None, "personal"],
|
||||
}
|
||||
),
|
||||
)
|
||||
new_data = pa.table(
|
||||
{
|
||||
"id": [1, 2],
|
||||
"name": ["Bobby", "Charlie"],
|
||||
"record_type": ["personal", None],
|
||||
}
|
||||
)
|
||||
|
||||
result = (
|
||||
table.merge_insert(["id", "record_type"])
|
||||
.when_matched_update_all()
|
||||
.when_not_matched_insert_all()
|
||||
.execute(new_data)
|
||||
)
|
||||
|
||||
assert result.num_inserted_rows == 1
|
||||
assert result.num_updated_rows == 1
|
||||
assert result.num_deleted_rows == 0
|
||||
expected = pa.table(
|
||||
{
|
||||
"id": [0, 1, 2],
|
||||
"name": ["Alice", "Bobby", "Charlie"],
|
||||
"record_type": [None, "personal", None],
|
||||
}
|
||||
)
|
||||
assert table.to_arrow().sort_by("id") == expected
|
||||
|
||||
|
||||
def test_merge_insert_by_source_delete_expr(mem_db: DBConnection):
|
||||
table = mem_db.create_table(
|
||||
"my_table",
|
||||
|
||||
Reference in New Issue
Block a user