This commit is contained in:
Benjamin Toby 2026-02-11 05:14:25 +01:00
parent b25316485b
commit 09fff9881e
3 changed files with 67 additions and 1 deletions

View File

@ -131,6 +131,39 @@ export type DSQL_FieldSchemaType = {
options?: string[];
isVector?: boolean;
vectorSize?: number;
/**
* ### Adds a `+` prefix to colums
* In sqlite-vec, the + prefix is a specialized syntax for Virtual Table Columns. It essentially tells the database: "Keep this data associated with the vector, but don't try to index it for math."
Here is the breakdown of why they matter and how they work:
1. Performance Separation
In a standard table, adding a massive TEXT column (like a 2,000-word article) slows down full-table scans. In a vec0 virtual table, columns prefixed with + are stored in a separate internal side-car table.
The Vector Index: Stays lean and fast for "Nearest Neighbor" math.
The Content: Is only fetched after the vector search identifies the winning rows.
2. The "No Join" Convenience
Normally, you would store vectors in one table and the actual text content in another, linking them with a FOREIGN KEY.
Without + columns: You must JOIN two tables to get the text after finding the vector.
With + columns: You can SELECT content directly from the virtual table. It handles the "join" logic internally, making your code cleaner.
3. Syntax Example
When defining your schema, the + is only used in the CREATE statement. When querying or inserting, you treat it like a normal name.
```sql
-- SCHEMA DEFINITION
CREATE VIRTUAL TABLE documents USING vec0(
embedding float, -- The vector (indexed)
+title TEXT, -- Side-car metadata (not indexed)
+raw_body TEXT -- Side-car "heavy" data (not indexed)
);
-- INSERTING (Notice: No '+' here)
INSERT INTO documents(embedding, title, raw_body)
VALUES (vec_f32(?), 'Bun Docs', 'Bun is a fast JavaScript runtime...');
-- QUERYING (Notice: No '+' here)
SELECT title, raw_body
FROM documents
WHERE embedding MATCH ? AND k = 1;
```
*/
sideCar?: boolean;
} & {
[key in (typeof TextFieldTypesArray)[number]["value"]]?: boolean;
};

View File

@ -162,6 +162,39 @@ export type DSQL_FieldSchemaType = {
options?: string[];
isVector?: boolean;
vectorSize?: number;
/**
* ### Adds a `+` prefix to colums
* In sqlite-vec, the + prefix is a specialized syntax for Virtual Table Columns. It essentially tells the database: "Keep this data associated with the vector, but don't try to index it for math."
Here is the breakdown of why they matter and how they work:
1. Performance Separation
In a standard table, adding a massive TEXT column (like a 2,000-word article) slows down full-table scans. In a vec0 virtual table, columns prefixed with + are stored in a separate internal side-car table.
The Vector Index: Stays lean and fast for "Nearest Neighbor" math.
The Content: Is only fetched after the vector search identifies the winning rows.
2. The "No Join" Convenience
Normally, you would store vectors in one table and the actual text content in another, linking them with a FOREIGN KEY.
Without + columns: You must JOIN two tables to get the text after finding the vector.
With + columns: You can SELECT content directly from the virtual table. It handles the "join" logic internally, making your code cleaner.
3. Syntax Example
When defining your schema, the + is only used in the CREATE statement. When querying or inserting, you treat it like a normal name.
```sql
-- SCHEMA DEFINITION
CREATE VIRTUAL TABLE documents USING vec0(
embedding float, -- The vector (indexed)
+title TEXT, -- Side-car metadata (not indexed)
+raw_body TEXT -- Side-car "heavy" data (not indexed)
);
-- INSERTING (Notice: No '+' here)
INSERT INTO documents(embedding, title, raw_body)
VALUES (vec_f32(?), 'Bun Docs', 'Bun is a fast JavaScript runtime...');
-- QUERYING (Notice: No '+' here)
SELECT title, raw_body
FROM documents
WHERE embedding MATCH ? AND k = 1;
```
*/
sideCar?: boolean;
} & {
[key in (typeof TextFieldTypesArray)[number]["value"]]?: boolean;
};

View File

@ -1,6 +1,6 @@
{
"name": "@moduletrace/datasquirel",
"version": "5.7.37",
"version": "5.7.38",
"description": "Cloud-based SQL data management tool",
"main": "dist/index.js",
"bin": {