@functional-systems/lambdadb 0.3.4-dev.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -7
- package/dist/commonjs/compat/qdrant/client.d.ts +210 -0
- package/dist/commonjs/compat/qdrant/client.d.ts.map +1 -0
- package/dist/commonjs/compat/qdrant/client.js +573 -0
- package/dist/commonjs/compat/qdrant/client.js.map +1 -0
- package/dist/commonjs/compat/qdrant/conversions.d.ts +40 -0
- package/dist/commonjs/compat/qdrant/conversions.d.ts.map +1 -0
- package/dist/commonjs/compat/qdrant/conversions.js +386 -0
- package/dist/commonjs/compat/qdrant/conversions.js.map +1 -0
- package/dist/commonjs/compat/qdrant/errors.d.ts +10 -0
- package/dist/commonjs/compat/qdrant/errors.d.ts.map +1 -0
- package/dist/commonjs/compat/qdrant/errors.js +25 -0
- package/dist/commonjs/compat/qdrant/errors.js.map +1 -0
- package/dist/commonjs/compat/qdrant/filters.d.ts +10 -0
- package/dist/commonjs/compat/qdrant/filters.d.ts.map +1 -0
- package/dist/commonjs/compat/qdrant/filters.js +172 -0
- package/dist/commonjs/compat/qdrant/filters.js.map +1 -0
- package/dist/commonjs/compat/qdrant/models.d.ts +198 -0
- package/dist/commonjs/compat/qdrant/models.d.ts.map +1 -0
- package/dist/commonjs/compat/qdrant/models.js +205 -0
- package/dist/commonjs/compat/qdrant/models.js.map +1 -0
- package/dist/commonjs/compat/qdrant.d.ts +4 -0
- package/dist/commonjs/compat/qdrant.d.ts.map +1 -0
- package/dist/commonjs/compat/qdrant.js +45 -0
- package/dist/commonjs/compat/qdrant.js.map +1 -0
- package/dist/commonjs/models/indexconfigsunion.d.ts +2 -2
- package/dist/commonjs/models/indexconfigsunion.d.ts.map +1 -1
- package/dist/commonjs/models/indexconfigsunion.js +4 -4
- package/dist/commonjs/models/indexconfigsunion.js.map +1 -1
- package/dist/esm/compat/qdrant/client.d.ts +210 -0
- package/dist/esm/compat/qdrant/client.d.ts.map +1 -0
- package/dist/esm/compat/qdrant/client.js +536 -0
- package/dist/esm/compat/qdrant/client.js.map +1 -0
- package/dist/esm/compat/qdrant/conversions.d.ts +40 -0
- package/dist/esm/compat/qdrant/conversions.d.ts.map +1 -0
- package/dist/esm/compat/qdrant/conversions.js +336 -0
- package/dist/esm/compat/qdrant/conversions.js.map +1 -0
- package/dist/esm/compat/qdrant/errors.d.ts +10 -0
- package/dist/esm/compat/qdrant/errors.d.ts.map +1 -0
- package/dist/esm/compat/qdrant/errors.js +19 -0
- package/dist/esm/compat/qdrant/errors.js.map +1 -0
- package/dist/esm/compat/qdrant/filters.d.ts +10 -0
- package/dist/esm/compat/qdrant/filters.d.ts.map +1 -0
- package/dist/esm/compat/qdrant/filters.js +169 -0
- package/dist/esm/compat/qdrant/filters.js.map +1 -0
- package/dist/esm/compat/qdrant/models.d.ts +198 -0
- package/dist/esm/compat/qdrant/models.d.ts.map +1 -0
- package/dist/esm/compat/qdrant/models.js +185 -0
- package/dist/esm/compat/qdrant/models.js.map +1 -0
- package/dist/esm/compat/qdrant.d.ts +4 -0
- package/dist/esm/compat/qdrant.d.ts.map +1 -0
- package/dist/esm/compat/qdrant.js +4 -0
- package/dist/esm/compat/qdrant.js.map +1 -0
- package/dist/esm/models/indexconfigsunion.d.ts +2 -2
- package/dist/esm/models/indexconfigsunion.d.ts.map +1 -1
- package/dist/esm/models/indexconfigsunion.js +4 -4
- package/dist/esm/models/indexconfigsunion.js.map +1 -1
- package/jsr.json +3 -1
- package/package.json +32 -1
- package/src/compat/qdrant/client.ts +901 -0
- package/src/compat/qdrant/conversions.ts +422 -0
- package/src/compat/qdrant/errors.ts +20 -0
- package/src/compat/qdrant/filters.ts +213 -0
- package/src/compat/qdrant/models.ts +317 -0
- package/src/compat/qdrant.ts +3 -0
- package/src/models/indexconfigsunion.ts +6 -6
- package/test/integration/qdrant-compat-external.test.mjs +226 -0
- package/test/integration/qdrant-compat-live.test.mjs +122 -0
- package/test/public-api.test.mjs +145 -4
- package/test/qdrant-compat.test.mjs +402 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.RESERVED_PREFIX = exports.ORIGINAL_ID_FIELD = exports.ID_FIELD = exports.DEFAULT_VECTOR_NAME = void 0;
|
|
37
|
+
exports.vectorFieldName = vectorFieldName;
|
|
38
|
+
exports.pointFromAny = pointFromAny;
|
|
39
|
+
exports.pointsToDocs = pointsToDocs;
|
|
40
|
+
exports.pointToDoc = pointToDoc;
|
|
41
|
+
exports.docToRecord = docToRecord;
|
|
42
|
+
exports.resultToScoredPoint = resultToScoredPoint;
|
|
43
|
+
exports.vectorConfigToIndexConfigs = vectorConfigToIndexConfigs;
|
|
44
|
+
exports.payloadSchemaToIndexConfigs = payloadSchemaToIndexConfigs;
|
|
45
|
+
exports.mergeIndexConfigs = mergeIndexConfigs;
|
|
46
|
+
exports.queryVectorAndField = queryVectorAndField;
|
|
47
|
+
exports.plainIndexConfigs = plainIndexConfigs;
|
|
48
|
+
exports.qdrantVectorsConfig = qdrantVectorsConfig;
|
|
49
|
+
exports.validatePayloadFieldName = validatePayloadFieldName;
|
|
50
|
+
exports.distanceToSimilarity = distanceToSimilarity;
|
|
51
|
+
const models_js_1 = require("./models.js");
|
|
52
|
+
const models = __importStar(require("./models.js"));
|
|
53
|
+
const errors_js_1 = require("./errors.js");
|
|
54
|
+
exports.DEFAULT_VECTOR_NAME = "_qdrant_vector";
|
|
55
|
+
exports.ID_FIELD = "id";
|
|
56
|
+
exports.ORIGINAL_ID_FIELD = "_qdrant_id";
|
|
57
|
+
exports.RESERVED_PREFIX = "_qdrant_";
|
|
58
|
+
const payloadSchemaTypeAliases = {
|
|
59
|
+
keyword: "keyword",
|
|
60
|
+
integer: "long",
|
|
61
|
+
int: "long",
|
|
62
|
+
long: "long",
|
|
63
|
+
float: "double",
|
|
64
|
+
double: "double",
|
|
65
|
+
bool: "boolean",
|
|
66
|
+
boolean: "boolean",
|
|
67
|
+
datetime: "datetime",
|
|
68
|
+
text: "text",
|
|
69
|
+
uuid: "keyword",
|
|
70
|
+
};
|
|
71
|
+
function vectorFieldName(name) {
|
|
72
|
+
if (name == null || name === "")
|
|
73
|
+
return exports.DEFAULT_VECTOR_NAME;
|
|
74
|
+
return `${exports.DEFAULT_VECTOR_NAME}_${String(name).replaceAll(".", "_")}`;
|
|
75
|
+
}
|
|
76
|
+
function pointFromAny(point) {
|
|
77
|
+
if (point instanceof models_js_1.PointStruct)
|
|
78
|
+
return point;
|
|
79
|
+
if (isObject(point) && "id" in point && "vector" in point) {
|
|
80
|
+
return new models_js_1.PointStruct(point);
|
|
81
|
+
}
|
|
82
|
+
throw new errors_js_1.QdrantCompatValidationError(`Unsupported point type: ${typeof point}`);
|
|
83
|
+
}
|
|
84
|
+
function pointsToDocs(points) {
|
|
85
|
+
return Array.from(points, pointToDoc);
|
|
86
|
+
}
|
|
87
|
+
function pointToDoc(point) {
|
|
88
|
+
const item = pointFromAny(point);
|
|
89
|
+
const payload = { ...(item.payload ?? {}) };
|
|
90
|
+
validatePayload(payload);
|
|
91
|
+
const doc = {
|
|
92
|
+
[exports.ID_FIELD]: String(item.id),
|
|
93
|
+
[exports.ORIGINAL_ID_FIELD]: item.id,
|
|
94
|
+
...payload,
|
|
95
|
+
};
|
|
96
|
+
if (isDenseVector(item.vector)) {
|
|
97
|
+
doc[exports.DEFAULT_VECTOR_NAME] = item.vector;
|
|
98
|
+
return doc;
|
|
99
|
+
}
|
|
100
|
+
if (isObject(item.vector)) {
|
|
101
|
+
for (const [name, vector] of Object.entries(item.vector)) {
|
|
102
|
+
if (isSparseVectorLike(vector)) {
|
|
103
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError("Sparse vectors are not supported in v1 Qdrant compatibility upsert");
|
|
104
|
+
}
|
|
105
|
+
if (!isDenseVector(vector)) {
|
|
106
|
+
throw new errors_js_1.QdrantCompatValidationError("Named point vectors must be dense vector arrays");
|
|
107
|
+
}
|
|
108
|
+
doc[vectorFieldName(name)] = vector;
|
|
109
|
+
}
|
|
110
|
+
return doc;
|
|
111
|
+
}
|
|
112
|
+
throw new errors_js_1.QdrantCompatValidationError("Point vector must be a dense vector array or named vector object");
|
|
113
|
+
}
|
|
114
|
+
function docToRecord(input, options = {}) {
|
|
115
|
+
const doc = unwrapDoc(input);
|
|
116
|
+
return new models.Record({
|
|
117
|
+
id: docId(doc),
|
|
118
|
+
payload: options.withPayload === false ? undefined : payloadFromDoc(doc),
|
|
119
|
+
vector: vectorFromDoc(doc, options.withVectors === true),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function resultToScoredPoint(result, options = {}) {
|
|
123
|
+
const doc = unwrapDoc(result);
|
|
124
|
+
const score = isObject(result) && typeof result["score"] === "number"
|
|
125
|
+
? result["score"]
|
|
126
|
+
: undefined;
|
|
127
|
+
return new models.ScoredPoint({
|
|
128
|
+
id: docId(doc),
|
|
129
|
+
score,
|
|
130
|
+
payload: options.withPayload === false ? undefined : payloadFromDoc(doc),
|
|
131
|
+
vector: vectorFromDoc(doc, options.withVectors === true),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
function vectorConfigToIndexConfigs(vectorsConfig) {
|
|
135
|
+
if (isVectorParamsLike(vectorsConfig)) {
|
|
136
|
+
const params = vectorParamsFromAny(vectorsConfig);
|
|
137
|
+
return {
|
|
138
|
+
[exports.DEFAULT_VECTOR_NAME]: {
|
|
139
|
+
type: "vector",
|
|
140
|
+
dimensions: params.size,
|
|
141
|
+
similarity: distanceToSimilarity(params.distance),
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
if (isObject(vectorsConfig)) {
|
|
146
|
+
if ("size" in vectorsConfig) {
|
|
147
|
+
return vectorConfigToIndexConfigs(vectorParamsFromAny(vectorsConfig));
|
|
148
|
+
}
|
|
149
|
+
const indexConfigs = {};
|
|
150
|
+
for (const [name, rawParams] of Object.entries(vectorsConfig)) {
|
|
151
|
+
const params = vectorParamsFromAny(rawParams);
|
|
152
|
+
indexConfigs[vectorFieldName(name)] = {
|
|
153
|
+
type: "vector",
|
|
154
|
+
dimensions: params.size,
|
|
155
|
+
similarity: distanceToSimilarity(params.distance),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
return indexConfigs;
|
|
159
|
+
}
|
|
160
|
+
throw new errors_js_1.QdrantCompatValidationError("vectorsConfig must be VectorParams or a mapping of vector names");
|
|
161
|
+
}
|
|
162
|
+
function payloadSchemaToIndexConfigs(payloadSchema) {
|
|
163
|
+
if (payloadSchema == null)
|
|
164
|
+
return {};
|
|
165
|
+
if (!isObject(payloadSchema)) {
|
|
166
|
+
throw new errors_js_1.QdrantCompatValidationError("payloadSchema must be a mapping of payload field names to schema types");
|
|
167
|
+
}
|
|
168
|
+
const indexConfigs = {};
|
|
169
|
+
for (const [fieldName, rawSchema] of Object.entries(payloadSchema)) {
|
|
170
|
+
validatePayloadFieldName(fieldName);
|
|
171
|
+
indexConfigs[fieldName] = { type: payloadSchemaType(rawSchema) };
|
|
172
|
+
}
|
|
173
|
+
return indexConfigs;
|
|
174
|
+
}
|
|
175
|
+
function mergeIndexConfigs(...configs) {
|
|
176
|
+
const merged = {};
|
|
177
|
+
for (const config of configs) {
|
|
178
|
+
for (const [fieldName, indexConfig] of Object.entries(config)) {
|
|
179
|
+
if (fieldName in merged &&
|
|
180
|
+
JSON.stringify(merged[fieldName]) !== JSON.stringify(indexConfig)) {
|
|
181
|
+
throw new errors_js_1.QdrantCompatValidationError(`Conflicting index config for field ${fieldName}`);
|
|
182
|
+
}
|
|
183
|
+
merged[fieldName] = { ...indexConfig };
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return merged;
|
|
187
|
+
}
|
|
188
|
+
function queryVectorAndField(query, using) {
|
|
189
|
+
if (isDenseVector(query)) {
|
|
190
|
+
return { vector: query, field: vectorFieldName(using) };
|
|
191
|
+
}
|
|
192
|
+
if (Array.isArray(query) && query.length === 2 && typeof query[0] === "string") {
|
|
193
|
+
const vector = query[1];
|
|
194
|
+
if (!isDenseVector(vector)) {
|
|
195
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError("Only dense vector arrays are supported in v1");
|
|
196
|
+
}
|
|
197
|
+
return { vector, field: vectorFieldName(query[0]) };
|
|
198
|
+
}
|
|
199
|
+
if (isObject(query)) {
|
|
200
|
+
if ("nearest" in query) {
|
|
201
|
+
return queryVectorAndField(query["nearest"], using);
|
|
202
|
+
}
|
|
203
|
+
if ("vector" in query) {
|
|
204
|
+
const rawVector = query["vector"];
|
|
205
|
+
if (isObject(rawVector) && "name" in rawVector && "vector" in rawVector) {
|
|
206
|
+
const namedVector = rawVector["vector"];
|
|
207
|
+
if (!isDenseVector(namedVector)) {
|
|
208
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError("Only dense vector arrays are supported in v1");
|
|
209
|
+
}
|
|
210
|
+
return { vector: namedVector, field: vectorFieldName(String(rawVector["name"])) };
|
|
211
|
+
}
|
|
212
|
+
if (!isDenseVector(rawVector)) {
|
|
213
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError("Only dense vector arrays are supported in v1");
|
|
214
|
+
}
|
|
215
|
+
return { vector: rawVector, field: vectorFieldName(using) };
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError("Only dense vector queryPoints/search inputs are supported in v1");
|
|
219
|
+
}
|
|
220
|
+
function plainIndexConfigs(rawIndexConfigs) {
|
|
221
|
+
if (!isObject(rawIndexConfigs))
|
|
222
|
+
return {};
|
|
223
|
+
const result = {};
|
|
224
|
+
for (const [fieldName, rawIndexConfig] of Object.entries(rawIndexConfigs)) {
|
|
225
|
+
if (!isObject(rawIndexConfig))
|
|
226
|
+
continue;
|
|
227
|
+
const normalized = {};
|
|
228
|
+
for (const [key, value] of Object.entries(rawIndexConfig)) {
|
|
229
|
+
if (value !== undefined && value !== null)
|
|
230
|
+
normalized[key] = value;
|
|
231
|
+
}
|
|
232
|
+
result[fieldName] = normalized;
|
|
233
|
+
}
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
function qdrantVectorsConfig(indexConfigs) {
|
|
237
|
+
let unnamedVector;
|
|
238
|
+
const namedVectors = {};
|
|
239
|
+
for (const [fieldName, indexConfig] of Object.entries(indexConfigs)) {
|
|
240
|
+
if (indexConfig["type"] !== "vector")
|
|
241
|
+
continue;
|
|
242
|
+
const params = new models_js_1.VectorParams({
|
|
243
|
+
size: Number(indexConfig["dimensions"]),
|
|
244
|
+
distance: similarityToDistance(indexConfig["similarity"]),
|
|
245
|
+
});
|
|
246
|
+
if (fieldName === exports.DEFAULT_VECTOR_NAME) {
|
|
247
|
+
unnamedVector = params;
|
|
248
|
+
}
|
|
249
|
+
else if (fieldName.startsWith(`${exports.DEFAULT_VECTOR_NAME}_`)) {
|
|
250
|
+
namedVectors[fieldName.slice(exports.DEFAULT_VECTOR_NAME.length + 1)] = params;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (unnamedVector !== undefined && Object.keys(namedVectors).length === 0) {
|
|
254
|
+
return unnamedVector;
|
|
255
|
+
}
|
|
256
|
+
if (unnamedVector !== undefined) {
|
|
257
|
+
namedVectors[""] = unnamedVector;
|
|
258
|
+
}
|
|
259
|
+
return namedVectors;
|
|
260
|
+
}
|
|
261
|
+
function validatePayloadFieldName(key) {
|
|
262
|
+
if (key.startsWith(exports.RESERVED_PREFIX)) {
|
|
263
|
+
throw new errors_js_1.QdrantCompatValidationError(`Payload field ${key} uses reserved prefix ${exports.RESERVED_PREFIX}`);
|
|
264
|
+
}
|
|
265
|
+
if (key === exports.ID_FIELD) {
|
|
266
|
+
throw new errors_js_1.QdrantCompatValidationError("Payload field 'id' conflicts with the Qdrant point id");
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
function distanceToSimilarity(distance) {
|
|
270
|
+
if (distance === models_js_1.Distance.COSINE || distance === "cosine")
|
|
271
|
+
return "cosine";
|
|
272
|
+
if (distance === models_js_1.Distance.EUCLID || distance === "euclidean")
|
|
273
|
+
return "euclidean";
|
|
274
|
+
if (distance === models_js_1.Distance.DOT || distance === "dot_product")
|
|
275
|
+
return "dot_product";
|
|
276
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError(`Qdrant distance ${String(distance)} is not supported`);
|
|
277
|
+
}
|
|
278
|
+
function vectorParamsFromAny(value) {
|
|
279
|
+
if (value instanceof models_js_1.VectorParams)
|
|
280
|
+
return value;
|
|
281
|
+
if (isObject(value) && "size" in value) {
|
|
282
|
+
const init = {
|
|
283
|
+
size: Number(value["size"]),
|
|
284
|
+
};
|
|
285
|
+
if (typeof value["distance"] === "string")
|
|
286
|
+
init.distance = value["distance"];
|
|
287
|
+
return new models_js_1.VectorParams(init);
|
|
288
|
+
}
|
|
289
|
+
throw new errors_js_1.QdrantCompatValidationError("vectorsConfig values must be VectorParams-like objects");
|
|
290
|
+
}
|
|
291
|
+
function similarityToDistance(similarity) {
|
|
292
|
+
const value = similarity ?? "cosine";
|
|
293
|
+
if (value === "cosine")
|
|
294
|
+
return models_js_1.Distance.COSINE;
|
|
295
|
+
if (value === "euclidean")
|
|
296
|
+
return models_js_1.Distance.EUCLID;
|
|
297
|
+
if (value === "dot_product")
|
|
298
|
+
return models_js_1.Distance.DOT;
|
|
299
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError(`LambdaDB similarity ${String(value)} cannot be represented as a Qdrant distance`);
|
|
300
|
+
}
|
|
301
|
+
function payloadSchemaType(rawSchema) {
|
|
302
|
+
let rawType;
|
|
303
|
+
if (typeof rawSchema === "string") {
|
|
304
|
+
rawType = rawSchema;
|
|
305
|
+
}
|
|
306
|
+
else if (isObject(rawSchema) && "type" in rawSchema) {
|
|
307
|
+
rawType = String(rawSchema["type"]);
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
throw new errors_js_1.QdrantCompatValidationError(`Unsupported payload schema value: ${String(rawSchema)}`);
|
|
311
|
+
}
|
|
312
|
+
const normalized = rawType.toLowerCase();
|
|
313
|
+
if (normalized === "geo") {
|
|
314
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError("Geo payload indexes are not supported by LambdaDB Qdrant compatibility");
|
|
315
|
+
}
|
|
316
|
+
const mapped = payloadSchemaTypeAliases[normalized];
|
|
317
|
+
if (mapped === undefined) {
|
|
318
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError(`Unsupported Qdrant payload schema type: ${rawType}`);
|
|
319
|
+
}
|
|
320
|
+
return mapped;
|
|
321
|
+
}
|
|
322
|
+
function validatePayload(payload) {
|
|
323
|
+
for (const key of Object.keys(payload)) {
|
|
324
|
+
validatePayloadFieldName(key);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
function payloadFromDoc(doc) {
|
|
328
|
+
const payload = {};
|
|
329
|
+
for (const [key, value] of Object.entries(doc)) {
|
|
330
|
+
if (key !== exports.ID_FIELD && !key.startsWith(exports.RESERVED_PREFIX)) {
|
|
331
|
+
payload[key] = value;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return payload;
|
|
335
|
+
}
|
|
336
|
+
function vectorFromDoc(doc, withVectors) {
|
|
337
|
+
if (!withVectors)
|
|
338
|
+
return undefined;
|
|
339
|
+
const named = {};
|
|
340
|
+
let defaultVector;
|
|
341
|
+
for (const [key, value] of Object.entries(doc)) {
|
|
342
|
+
if (key === exports.DEFAULT_VECTOR_NAME) {
|
|
343
|
+
defaultVector = value;
|
|
344
|
+
}
|
|
345
|
+
else if (key.startsWith(`${exports.DEFAULT_VECTOR_NAME}_`)) {
|
|
346
|
+
named[key.slice(exports.DEFAULT_VECTOR_NAME.length + 1)] = value;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (Object.keys(named).length > 0) {
|
|
350
|
+
if (defaultVector !== undefined)
|
|
351
|
+
named[""] = defaultVector;
|
|
352
|
+
return named;
|
|
353
|
+
}
|
|
354
|
+
return defaultVector;
|
|
355
|
+
}
|
|
356
|
+
function docId(doc) {
|
|
357
|
+
const originalId = doc[exports.ORIGINAL_ID_FIELD];
|
|
358
|
+
if (typeof originalId === "string" || typeof originalId === "number") {
|
|
359
|
+
return originalId;
|
|
360
|
+
}
|
|
361
|
+
const id = doc[exports.ID_FIELD];
|
|
362
|
+
if (typeof id === "string" || typeof id === "number")
|
|
363
|
+
return id;
|
|
364
|
+
return "";
|
|
365
|
+
}
|
|
366
|
+
function unwrapDoc(input) {
|
|
367
|
+
if (isObject(input) && isObject(input["doc"]))
|
|
368
|
+
return input["doc"];
|
|
369
|
+
if (isObject(input))
|
|
370
|
+
return input;
|
|
371
|
+
throw new errors_js_1.QdrantCompatValidationError("LambdaDB result doc must be an object");
|
|
372
|
+
}
|
|
373
|
+
function isVectorParamsLike(value) {
|
|
374
|
+
return value instanceof models_js_1.VectorParams || (isObject(value) && "size" in value);
|
|
375
|
+
}
|
|
376
|
+
function isDenseVector(value) {
|
|
377
|
+
return Array.isArray(value) && value.every((item) => typeof item === "number");
|
|
378
|
+
}
|
|
379
|
+
function isSparseVectorLike(value) {
|
|
380
|
+
return value instanceof models_js_1.SparseVector ||
|
|
381
|
+
(isObject(value) && Array.isArray(value["indices"]) && Array.isArray(value["values"]));
|
|
382
|
+
}
|
|
383
|
+
function isObject(value) {
|
|
384
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
385
|
+
}
|
|
386
|
+
//# sourceMappingURL=conversions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversions.js","sourceRoot":"","sources":["../../../../src/compat/qdrant/conversions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class QdrantCompatError extends Error {
|
|
2
|
+
constructor(message: string, options?: ErrorOptions);
|
|
3
|
+
}
|
|
4
|
+
export declare class UnsupportedQdrantFeatureError extends QdrantCompatError {
|
|
5
|
+
constructor(message: string, options?: ErrorOptions);
|
|
6
|
+
}
|
|
7
|
+
export declare class QdrantCompatValidationError extends QdrantCompatError {
|
|
8
|
+
constructor(message: string, options?: ErrorOptions);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/compat/qdrant/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,qBAAa,6BAA8B,SAAQ,iBAAiB;gBACtD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,qBAAa,2BAA4B,SAAQ,iBAAiB;gBACpD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QdrantCompatValidationError = exports.UnsupportedQdrantFeatureError = exports.QdrantCompatError = void 0;
|
|
4
|
+
class QdrantCompatError extends Error {
|
|
5
|
+
constructor(message, options) {
|
|
6
|
+
super(message, options);
|
|
7
|
+
this.name = "QdrantCompatError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.QdrantCompatError = QdrantCompatError;
|
|
11
|
+
class UnsupportedQdrantFeatureError extends QdrantCompatError {
|
|
12
|
+
constructor(message, options) {
|
|
13
|
+
super(message, options);
|
|
14
|
+
this.name = "UnsupportedQdrantFeatureError";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.UnsupportedQdrantFeatureError = UnsupportedQdrantFeatureError;
|
|
18
|
+
class QdrantCompatValidationError extends QdrantCompatError {
|
|
19
|
+
constructor(message, options) {
|
|
20
|
+
super(message, options);
|
|
21
|
+
this.name = "QdrantCompatValidationError";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.QdrantCompatValidationError = QdrantCompatValidationError;
|
|
25
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/compat/qdrant/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC;AAED,MAAa,6BAA8B,SAAQ,iBAAiB;IAClE,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AALD,sEAKC;AAED,MAAa,2BAA4B,SAAQ,iBAAiB;IAChE,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AALD,kEAKC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Filter } from "./models.js";
|
|
2
|
+
type JsonObject = {
|
|
3
|
+
[key: string]: unknown;
|
|
4
|
+
};
|
|
5
|
+
type LambdaDBQuery = {
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
export declare function filterToLambdaDB(qdrantFilter: Filter | JsonObject | null | undefined): LambdaDBQuery;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../src/compat/qdrant/filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAQP,MAAM,aAAa,CAAC;AAMrB,KAAK,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAC7C,KAAK,aAAa,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEhD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CAiBpG"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.filterToLambdaDB = filterToLambdaDB;
|
|
4
|
+
const models_js_1 = require("./models.js");
|
|
5
|
+
const errors_js_1 = require("./errors.js");
|
|
6
|
+
function filterToLambdaDB(qdrantFilter) {
|
|
7
|
+
if (qdrantFilter == null)
|
|
8
|
+
return {};
|
|
9
|
+
const filter = filterFromAny(qdrantFilter);
|
|
10
|
+
const clauses = [];
|
|
11
|
+
if (filter.must)
|
|
12
|
+
appendBoolClauses(clauses, filter.must, "filter");
|
|
13
|
+
if (filter.should)
|
|
14
|
+
appendBoolClauses(clauses, filter.should, "should");
|
|
15
|
+
if (filter.mustNot)
|
|
16
|
+
appendBoolClauses(clauses, filter.mustNot, "must_not");
|
|
17
|
+
if (clauses.length === 0)
|
|
18
|
+
return {};
|
|
19
|
+
if (clauses.length === 1) {
|
|
20
|
+
const [clause] = clauses;
|
|
21
|
+
const singleClause = { ...clause };
|
|
22
|
+
delete singleClause["occur"];
|
|
23
|
+
return singleClause;
|
|
24
|
+
}
|
|
25
|
+
return { bool: clauses };
|
|
26
|
+
}
|
|
27
|
+
function appendBoolClauses(clauses, conditions, occur) {
|
|
28
|
+
for (const condition of conditions) {
|
|
29
|
+
const conditionQueries = conditionQueriesFromAny(condition);
|
|
30
|
+
const rawMatch = rawConditionMatch(condition);
|
|
31
|
+
const negateMatchExcept = isMatchExceptLike(rawMatch);
|
|
32
|
+
const effectiveOccur = negateMatchExcept && occur !== "must_not"
|
|
33
|
+
? "must_not"
|
|
34
|
+
: occur;
|
|
35
|
+
for (const query of conditionQueries) {
|
|
36
|
+
clauses.push({ ...query, occur: effectiveOccur });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function conditionQueriesFromAny(condition) {
|
|
41
|
+
const normalized = conditionFromAny(condition);
|
|
42
|
+
if (normalized instanceof models_js_1.HasIdCondition) {
|
|
43
|
+
return normalized.hasId.map((id) => queryString(`id:${formatScalar(id)}`));
|
|
44
|
+
}
|
|
45
|
+
if (!(normalized instanceof models_js_1.FieldCondition)) {
|
|
46
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError(`Unsupported Qdrant filter condition: ${JSON.stringify(condition)}`);
|
|
47
|
+
}
|
|
48
|
+
const queries = [];
|
|
49
|
+
if (normalized.match !== undefined) {
|
|
50
|
+
queries.push(...matchQueries(normalized.key, normalized.match));
|
|
51
|
+
}
|
|
52
|
+
if (normalized.range !== undefined) {
|
|
53
|
+
queries.push(queryString(rangeQuery(normalized.key, normalized.range)));
|
|
54
|
+
}
|
|
55
|
+
if (queries.length === 0) {
|
|
56
|
+
throw new errors_js_1.QdrantCompatValidationError("FieldCondition must include match or range");
|
|
57
|
+
}
|
|
58
|
+
return queries;
|
|
59
|
+
}
|
|
60
|
+
function matchQueries(field, rawMatch) {
|
|
61
|
+
const match = matchFromAny(rawMatch);
|
|
62
|
+
if (match instanceof models_js_1.MatchValue) {
|
|
63
|
+
return [queryString(`${field}:${formatScalar(match.value)}`)];
|
|
64
|
+
}
|
|
65
|
+
if (match instanceof models_js_1.MatchAny) {
|
|
66
|
+
return match.any.map((value) => queryString(`${field}:${formatScalar(value)}`));
|
|
67
|
+
}
|
|
68
|
+
if (match instanceof models_js_1.MatchExcept) {
|
|
69
|
+
return match.except.map((value) => queryString(`${field}:${formatScalar(value)}`));
|
|
70
|
+
}
|
|
71
|
+
if (match instanceof models_js_1.MatchText) {
|
|
72
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError("MatchText is not supported in the v1 Qdrant compatibility filter");
|
|
73
|
+
}
|
|
74
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError(`Unsupported Qdrant match condition: ${JSON.stringify(rawMatch)}`);
|
|
75
|
+
}
|
|
76
|
+
function rangeQuery(field, rawRange) {
|
|
77
|
+
const range = rawRange instanceof models_js_1.Range
|
|
78
|
+
? rawRange
|
|
79
|
+
: new models_js_1.Range(rawRange);
|
|
80
|
+
let lower = "*";
|
|
81
|
+
let upper = "*";
|
|
82
|
+
let left = "[";
|
|
83
|
+
let right = "]";
|
|
84
|
+
if (range.gte !== undefined && range.gte !== null) {
|
|
85
|
+
lower = formatScalar(range.gte);
|
|
86
|
+
}
|
|
87
|
+
else if (range.gt !== undefined && range.gt !== null) {
|
|
88
|
+
lower = formatScalar(range.gt);
|
|
89
|
+
left = "{";
|
|
90
|
+
}
|
|
91
|
+
if (range.lte !== undefined && range.lte !== null) {
|
|
92
|
+
upper = formatScalar(range.lte);
|
|
93
|
+
}
|
|
94
|
+
else if (range.lt !== undefined && range.lt !== null) {
|
|
95
|
+
upper = formatScalar(range.lt);
|
|
96
|
+
right = "}";
|
|
97
|
+
}
|
|
98
|
+
return `${field}:${left}${lower} TO ${upper}${right}`;
|
|
99
|
+
}
|
|
100
|
+
function filterFromAny(value) {
|
|
101
|
+
if (value instanceof models_js_1.Filter)
|
|
102
|
+
return value;
|
|
103
|
+
if (isObject(value))
|
|
104
|
+
return new models_js_1.Filter(value);
|
|
105
|
+
throw new errors_js_1.QdrantCompatValidationError("queryFilter must be a Filter or object");
|
|
106
|
+
}
|
|
107
|
+
function conditionFromAny(condition) {
|
|
108
|
+
if (condition instanceof models_js_1.FieldCondition || condition instanceof models_js_1.HasIdCondition) {
|
|
109
|
+
return condition;
|
|
110
|
+
}
|
|
111
|
+
if (isObject(condition)) {
|
|
112
|
+
if ("key" in condition) {
|
|
113
|
+
return new models_js_1.FieldCondition(condition);
|
|
114
|
+
}
|
|
115
|
+
if ("has_id" in condition || "hasId" in condition) {
|
|
116
|
+
return new models_js_1.HasIdCondition(condition);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
throw new errors_js_1.UnsupportedQdrantFeatureError(`Unsupported Qdrant filter condition: ${JSON.stringify(condition)}`);
|
|
120
|
+
}
|
|
121
|
+
function matchFromAny(value) {
|
|
122
|
+
if (value instanceof models_js_1.MatchValue ||
|
|
123
|
+
value instanceof models_js_1.MatchAny ||
|
|
124
|
+
value instanceof models_js_1.MatchExcept ||
|
|
125
|
+
value instanceof models_js_1.MatchText) {
|
|
126
|
+
return value;
|
|
127
|
+
}
|
|
128
|
+
if (isObject(value)) {
|
|
129
|
+
if ("value" in value)
|
|
130
|
+
return new models_js_1.MatchValue({ value: value["value"] });
|
|
131
|
+
if ("any" in value && Array.isArray(value["any"])) {
|
|
132
|
+
return new models_js_1.MatchAny({ any: value["any"] });
|
|
133
|
+
}
|
|
134
|
+
if ("except" in value && Array.isArray(value["except"])) {
|
|
135
|
+
return new models_js_1.MatchExcept({ except: value["except"] });
|
|
136
|
+
}
|
|
137
|
+
if ("except_" in value && Array.isArray(value["except_"])) {
|
|
138
|
+
return new models_js_1.MatchExcept({ except_: value["except_"] });
|
|
139
|
+
}
|
|
140
|
+
if ("text" in value && typeof value["text"] === "string") {
|
|
141
|
+
return new models_js_1.MatchText({ text: value["text"] });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return value;
|
|
145
|
+
}
|
|
146
|
+
function rawConditionMatch(condition) {
|
|
147
|
+
if (condition instanceof models_js_1.FieldCondition)
|
|
148
|
+
return condition.match;
|
|
149
|
+
if (isObject(condition) && "match" in condition)
|
|
150
|
+
return condition["match"];
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
function isMatchExceptLike(value) {
|
|
154
|
+
return value instanceof models_js_1.MatchExcept ||
|
|
155
|
+
(isObject(value) && ("except" in value || "except_" in value));
|
|
156
|
+
}
|
|
157
|
+
function queryString(query) {
|
|
158
|
+
return { queryString: { query } };
|
|
159
|
+
}
|
|
160
|
+
function formatScalar(value) {
|
|
161
|
+
if (typeof value === "boolean")
|
|
162
|
+
return value ? "true" : "false";
|
|
163
|
+
if (typeof value === "number")
|
|
164
|
+
return String(value);
|
|
165
|
+
const text = String(value);
|
|
166
|
+
const escaped = text.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"");
|
|
167
|
+
return /[\s:/]/.test(escaped) ? `"${escaped}"` : escaped;
|
|
168
|
+
}
|
|
169
|
+
function isObject(value) {
|
|
170
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../src/compat/qdrant/filters.ts"],"names":[],"mappings":"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"}
|