Compare commits

..

1 Commits

Author SHA1 Message Date
Gatefixer 5a29ac2617 test(python): cover null keys in merge insert 2026-08-05 20:46:42 +00:00
3 changed files with 39 additions and 60 deletions
-30
View File
@@ -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
View File
@@ -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
+39
View File
@@ -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",