@adonis-agora/agent 0.17.0 → 0.18.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/CHANGELOG.md +133 -0
- package/README.md +210 -0
- package/dist/providers/agent_provider.d.ts +6 -4
- package/dist/providers/agent_provider.d.ts.map +1 -1
- package/dist/providers/agent_provider.js +23 -16
- package/dist/providers/agent_provider.js.map +1 -1
- package/dist/src/agent-deps-factory.d.ts +6 -0
- package/dist/src/agent-deps-factory.d.ts.map +1 -1
- package/dist/src/agent-deps-factory.js +5 -1
- package/dist/src/agent-deps-factory.js.map +1 -1
- package/dist/src/agent-deps.d.ts +6 -1
- package/dist/src/agent-deps.d.ts.map +1 -1
- package/dist/src/agent-deps.js.map +1 -1
- package/dist/src/agent-loop.d.ts +11 -2
- package/dist/src/agent-loop.d.ts.map +1 -1
- package/dist/src/agent-loop.js +69 -2
- package/dist/src/agent-loop.js.map +1 -1
- package/dist/src/data/tenant-scope.d.ts +16 -1
- package/dist/src/data/tenant-scope.d.ts.map +1 -1
- package/dist/src/data/tenant-scope.js +50 -7
- package/dist/src/data/tenant-scope.js.map +1 -1
- package/dist/src/define_config.d.ts +25 -9
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/governance-gate.d.ts +24 -8
- package/dist/src/governance-gate.d.ts.map +1 -1
- package/dist/src/governance-gate.js +14 -3
- package/dist/src/governance-gate.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/rag/chunk.d.ts +35 -0
- package/dist/src/rag/chunk.d.ts.map +1 -1
- package/dist/src/rag/chunk.js +60 -0
- package/dist/src/rag/chunk.js.map +1 -1
- package/dist/src/rag/index.d.ts +1 -1
- package/dist/src/rag/index.d.ts.map +1 -1
- package/dist/src/rag/index.js +1 -1
- package/dist/src/rag/index.js.map +1 -1
- package/dist/src/rag/memory-vector-store.d.ts +20 -1
- package/dist/src/rag/memory-vector-store.d.ts.map +1 -1
- package/dist/src/rag/memory-vector-store.js +56 -1
- package/dist/src/rag/memory-vector-store.js.map +1 -1
- package/dist/src/rag/pg-vector-store.d.ts +32 -1
- package/dist/src/rag/pg-vector-store.d.ts.map +1 -1
- package/dist/src/rag/pg-vector-store.js +69 -0
- package/dist/src/rag/pg-vector-store.js.map +1 -1
- package/dist/src/rag/qdrant-store.d.ts +81 -2
- package/dist/src/rag/qdrant-store.d.ts.map +1 -1
- package/dist/src/rag/qdrant-store.js +148 -1
- package/dist/src/rag/qdrant-store.js.map +1 -1
- package/dist/src/rag/vector-store.d.ts +144 -0
- package/dist/src/rag/vector-store.d.ts.map +1 -1
- package/dist/src/rag/vector-store.js +73 -0
- package/dist/src/rag/vector-store.js.map +1 -1
- package/package.json +14 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-vector-store.js","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"pg-vector-store.js","sourceRoot":"","sources":["../../../src/rag/pg-vector-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { EmbeddingProvider } from '../spi/embedding-provider.js';
|
|
2
2
|
import type { Passage } from '../spi/retriever.js';
|
|
3
3
|
import { EmbeddingRetriever } from './embedding-retriever.js';
|
|
4
|
-
import type { IndexedDocument, VectorRecord, VectorSearchOptions, VectorStore } from './vector-store.js';
|
|
4
|
+
import type { IndexedDocument, MetadataPatch, VectorRecord, VectorSearchOptions, VectorStore } from './vector-store.js';
|
|
5
5
|
/** Similaridade → nome de distância do Qdrant. Cosine (default), Dot (inner), Euclid (l2). */
|
|
6
6
|
export type QdrantMetric = 'cosine' | 'inner' | 'l2';
|
|
7
7
|
export interface QdrantStoreOptions {
|
|
@@ -73,10 +73,12 @@ export interface QdrantClientLike {
|
|
|
73
73
|
}>;
|
|
74
74
|
delete(collection: string, args: {
|
|
75
75
|
filter: QdrantFilter;
|
|
76
|
+
wait?: boolean;
|
|
76
77
|
}): Promise<unknown>;
|
|
77
78
|
scroll(collection: string, args: {
|
|
78
79
|
filter?: QdrantFilter;
|
|
79
|
-
|
|
80
|
+
/** `true` for the whole payload, or a key list to transfer only those keys. */
|
|
81
|
+
with_payload: boolean | string[];
|
|
80
82
|
with_vector: boolean;
|
|
81
83
|
limit: number;
|
|
82
84
|
offset?: unknown;
|
|
@@ -86,6 +88,32 @@ export interface QdrantClientLike {
|
|
|
86
88
|
}[];
|
|
87
89
|
next_page_offset?: unknown;
|
|
88
90
|
}>;
|
|
91
|
+
/**
|
|
92
|
+
* Set payload keys on specific points, leaving every other key — and **the vector** — alone. Backs
|
|
93
|
+
* {@link QdrantStore.updateMetadata}; the real `@qdrant/js-client-rest` provides it.
|
|
94
|
+
*
|
|
95
|
+
* OPTIONAL here, mirroring the `expire?` precedent on this package's Redis client shim, so adding it
|
|
96
|
+
* cannot break a host that hand-rolled this structural interface. `updateMetadata` throws a named
|
|
97
|
+
* error rather than degrading if it is absent: the alternative degradation would be scroll-with-vector
|
|
98
|
+
* plus `upsert`, which rewrites the embedding — the exact thing the method promises not to do.
|
|
99
|
+
*/
|
|
100
|
+
setPayload?(collection: string, args: {
|
|
101
|
+
payload: Record<string, unknown>;
|
|
102
|
+
points: string[];
|
|
103
|
+
wait?: boolean;
|
|
104
|
+
}): Promise<unknown>;
|
|
105
|
+
/**
|
|
106
|
+
* Count the points matching a filter WITHOUT transferring them. Backs the chunk count
|
|
107
|
+
* {@link QdrantStore.removeWhere} resolves to — Qdrant's delete response carries no count, and this is
|
|
108
|
+
* an aggregate, not an enumeration: no payloads, no vectors, one cheap round trip. Optional for the
|
|
109
|
+
* same reason as {@link QdrantClientLike.setPayload}; the real `@qdrant/js-client-rest` provides it.
|
|
110
|
+
*/
|
|
111
|
+
count?(collection: string, args: {
|
|
112
|
+
filter?: QdrantFilter;
|
|
113
|
+
exact?: boolean;
|
|
114
|
+
}): Promise<{
|
|
115
|
+
count: number;
|
|
116
|
+
}>;
|
|
89
117
|
}
|
|
90
118
|
/**
|
|
91
119
|
* Traduz o filtro de metadata (`Record<string, unknown>`) para um {@link QdrantFilter}, preservando a
|
|
@@ -115,6 +143,57 @@ export declare class QdrantStore implements VectorStore {
|
|
|
115
143
|
upsert(records: VectorRecord[]): Promise<void>;
|
|
116
144
|
search(embedding: number[], options: VectorSearchOptions): Promise<Passage[]>;
|
|
117
145
|
remove(documentId: string): Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* {@link VectorStore.updateMetadata} — rewrite every chunk's metadata for one document, touching
|
|
148
|
+
* neither `text` nor the **vector**.
|
|
149
|
+
*
|
|
150
|
+
* Qdrant is the one adapter here that cannot do the merge server-side. `set_payload` merges at the TOP
|
|
151
|
+
* level of a point's payload, and this store nests the caller's metadata one level down (under
|
|
152
|
+
* `metadata`, so a filter key is `metadata.<k>` — see {@link buildQdrantFilter}), so a top-level set of
|
|
153
|
+
* `metadata` replaces the whole object rather than merging into it. The merge therefore happens in JS:
|
|
154
|
+
* scroll the document's points for their current metadata, apply the shared
|
|
155
|
+
* {@link import('./vector-store.js').applyMetadataPatch}, write back. Cost: one scroll (payload only,
|
|
156
|
+
* **`with_vector: false`**, and only the two keys needed) plus one `set_payload` per distinct resulting
|
|
157
|
+
* metadata — which is ONE for any corpus built by `chunkDocuments`, since that stamps the same document
|
|
158
|
+
* metadata on every chunk.
|
|
159
|
+
*
|
|
160
|
+
* The vector is untouched by construction, not by care: `set_payload` has no vector field, and the
|
|
161
|
+
* points are never re-`upsert`ed (upsert is the call that would carry a vector). The scroll does not
|
|
162
|
+
* even fetch the vectors, so this method never has one in hand to write back.
|
|
163
|
+
*
|
|
164
|
+
* Point ids are re-derived with {@link chunkIdToPointId} from the chunk id in the payload, so the
|
|
165
|
+
* scroll needs no point id from the response and this store keeps working against a client whose
|
|
166
|
+
* `scroll` returns only payloads.
|
|
167
|
+
*
|
|
168
|
+
* `wait: true` because the returned count is a claim that the writes landed; Qdrant's default is to
|
|
169
|
+
* acknowledge before applying.
|
|
170
|
+
*/
|
|
171
|
+
updateMetadata(documentId: string, patch: MetadataPatch): Promise<number>;
|
|
172
|
+
/**
|
|
173
|
+
* {@link VectorStore.listDocumentIds} — the same scroll {@link QdrantStore.listDocuments} does, but
|
|
174
|
+
* transferring ONE payload key (`documentId`) instead of the whole payload, so the per-chunk metadata
|
|
175
|
+
* blob never crosses the wire or gets parsed. Qdrant has no `DISTINCT`, so the collapse still happens
|
|
176
|
+
* here; what this saves is the payload, which is the bulk of it. Filter comes from the same
|
|
177
|
+
* {@link buildQdrantFilter} `search` uses.
|
|
178
|
+
*/
|
|
179
|
+
listDocumentIds(filter?: Record<string, unknown>): Promise<string[]>;
|
|
180
|
+
/**
|
|
181
|
+
* {@link VectorStore.removeWhere} — ONE filtered `delete`, no enumeration: Qdrant deletes by filter
|
|
182
|
+
* server-side, so this never scrolls the points it is about to remove.
|
|
183
|
+
*
|
|
184
|
+
* Filter parity with {@link QdrantStore.search} is by construction — the same
|
|
185
|
+
* {@link buildQdrantFilter} call produces the predicate for both, so `metadata.<k>` keying, scalar
|
|
186
|
+
* `match.value`, array `match.any` set-membership and the empty-array deny are the same object here as
|
|
187
|
+
* there.
|
|
188
|
+
*
|
|
189
|
+
* It DOES cost one extra round trip that memory and pgvector do not: Qdrant's delete response carries
|
|
190
|
+
* no count, so the chunk count comes from a preceding `count` (an aggregate — no payloads, no vectors,
|
|
191
|
+
* not an enumeration). Consequence worth knowing: the count is taken just before the delete, so under
|
|
192
|
+
* concurrent writes it is a very slightly stale count of what matched, where memory and pgvector return
|
|
193
|
+
* an exact count from the deleting statement itself. The delete is filter-scoped either way; only the
|
|
194
|
+
* reported number can drift.
|
|
195
|
+
*/
|
|
196
|
+
removeWhere(filter: Record<string, unknown>): Promise<number>;
|
|
118
197
|
listDocuments(filter?: Record<string, unknown>): Promise<IndexedDocument[]>;
|
|
119
198
|
}
|
|
120
199
|
/** Um {@link import('../spi/retriever.js').Retriever} sobre uma {@link QdrantStore}: embeda a query,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant-store.d.ts","sourceRoot":"","sources":["../../../src/rag/qdrant-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"qdrant-store.d.ts","sourceRoot":"","sources":["../../../src/rag/qdrant-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { EmbeddingRetriever } from './embedding-retriever.js';
|
|
3
|
-
import { documentIdOf } from './vector-store.js';
|
|
3
|
+
import { applyMetadataPatch, assertRemovalFilter, documentIdOf, effectivePatchKeys, filterDeniesAll, } from './vector-store.js';
|
|
4
4
|
const DISTANCE = { cosine: 'Cosine', inner: 'Dot', l2: 'Euclid' };
|
|
5
5
|
/**
|
|
6
6
|
* Traduz o filtro de metadata (`Record<string, unknown>`) para um {@link QdrantFilter}, preservando a
|
|
@@ -127,6 +127,153 @@ export class QdrantStore {
|
|
|
127
127
|
filter: { must: [{ key: 'documentId', match: { value: documentId } }] },
|
|
128
128
|
});
|
|
129
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* {@link VectorStore.updateMetadata} — rewrite every chunk's metadata for one document, touching
|
|
132
|
+
* neither `text` nor the **vector**.
|
|
133
|
+
*
|
|
134
|
+
* Qdrant is the one adapter here that cannot do the merge server-side. `set_payload` merges at the TOP
|
|
135
|
+
* level of a point's payload, and this store nests the caller's metadata one level down (under
|
|
136
|
+
* `metadata`, so a filter key is `metadata.<k>` — see {@link buildQdrantFilter}), so a top-level set of
|
|
137
|
+
* `metadata` replaces the whole object rather than merging into it. The merge therefore happens in JS:
|
|
138
|
+
* scroll the document's points for their current metadata, apply the shared
|
|
139
|
+
* {@link import('./vector-store.js').applyMetadataPatch}, write back. Cost: one scroll (payload only,
|
|
140
|
+
* **`with_vector: false`**, and only the two keys needed) plus one `set_payload` per distinct resulting
|
|
141
|
+
* metadata — which is ONE for any corpus built by `chunkDocuments`, since that stamps the same document
|
|
142
|
+
* metadata on every chunk.
|
|
143
|
+
*
|
|
144
|
+
* The vector is untouched by construction, not by care: `set_payload` has no vector field, and the
|
|
145
|
+
* points are never re-`upsert`ed (upsert is the call that would carry a vector). The scroll does not
|
|
146
|
+
* even fetch the vectors, so this method never has one in hand to write back.
|
|
147
|
+
*
|
|
148
|
+
* Point ids are re-derived with {@link chunkIdToPointId} from the chunk id in the payload, so the
|
|
149
|
+
* scroll needs no point id from the response and this store keeps working against a client whose
|
|
150
|
+
* `scroll` returns only payloads.
|
|
151
|
+
*
|
|
152
|
+
* `wait: true` because the returned count is a claim that the writes landed; Qdrant's default is to
|
|
153
|
+
* acknowledge before applying.
|
|
154
|
+
*/
|
|
155
|
+
async updateMetadata(documentId, patch) {
|
|
156
|
+
if (effectivePatchKeys(patch).length === 0) {
|
|
157
|
+
return 0;
|
|
158
|
+
}
|
|
159
|
+
const setPayload = this.client.setPayload?.bind(this.client);
|
|
160
|
+
if (setPayload === undefined) {
|
|
161
|
+
throw new Error('QdrantStore.updateMetadata requires a client with `setPayload` (the real ' +
|
|
162
|
+
'@qdrant/js-client-rest has it). Refusing to fall back to upsert, which would rewrite the ' +
|
|
163
|
+
'embedding this method exists to preserve.');
|
|
164
|
+
}
|
|
165
|
+
// Group by the RESULTING metadata so identical outcomes share one write — the normal case.
|
|
166
|
+
const groups = new Map();
|
|
167
|
+
let written = 0;
|
|
168
|
+
let offset = undefined;
|
|
169
|
+
for (let pageCount = 0;; pageCount++) {
|
|
170
|
+
if (pageCount >= MAX_SCROLL_PAGES) {
|
|
171
|
+
throw new Error('updateMetadata: scroll excedeu MAX_SCROLL_PAGES (offset não terminou)');
|
|
172
|
+
}
|
|
173
|
+
const page = await this.client.scroll(this.collection, {
|
|
174
|
+
filter: { must: [{ key: 'documentId', match: { value: documentId } }] },
|
|
175
|
+
with_payload: ['id', 'metadata'],
|
|
176
|
+
with_vector: false,
|
|
177
|
+
limit: 256,
|
|
178
|
+
...(offset !== undefined ? { offset } : {}),
|
|
179
|
+
});
|
|
180
|
+
for (const point of page.points) {
|
|
181
|
+
const payload = point.payload ?? {};
|
|
182
|
+
const chunkId = payload.id;
|
|
183
|
+
if (chunkId === undefined || chunkId === null)
|
|
184
|
+
continue;
|
|
185
|
+
const current = payload.metadata;
|
|
186
|
+
const next = applyMetadataPatch(current !== undefined && current !== null
|
|
187
|
+
? current
|
|
188
|
+
: undefined, patch);
|
|
189
|
+
const key = JSON.stringify(next);
|
|
190
|
+
const group = groups.get(key) ?? { metadata: next, points: [] };
|
|
191
|
+
group.points.push(chunkIdToPointId(String(chunkId)));
|
|
192
|
+
groups.set(key, group);
|
|
193
|
+
written += 1;
|
|
194
|
+
}
|
|
195
|
+
if (page.next_page_offset === undefined || page.next_page_offset === null)
|
|
196
|
+
break;
|
|
197
|
+
offset = page.next_page_offset;
|
|
198
|
+
}
|
|
199
|
+
for (const group of groups.values()) {
|
|
200
|
+
await setPayload(this.collection, {
|
|
201
|
+
payload: { metadata: group.metadata },
|
|
202
|
+
points: group.points,
|
|
203
|
+
wait: true,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return written;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* {@link VectorStore.listDocumentIds} — the same scroll {@link QdrantStore.listDocuments} does, but
|
|
210
|
+
* transferring ONE payload key (`documentId`) instead of the whole payload, so the per-chunk metadata
|
|
211
|
+
* blob never crosses the wire or gets parsed. Qdrant has no `DISTINCT`, so the collapse still happens
|
|
212
|
+
* here; what this saves is the payload, which is the bulk of it. Filter comes from the same
|
|
213
|
+
* {@link buildQdrantFilter} `search` uses.
|
|
214
|
+
*/
|
|
215
|
+
async listDocumentIds(filter) {
|
|
216
|
+
const qFilter = buildQdrantFilter(filter);
|
|
217
|
+
const ids = new Set();
|
|
218
|
+
let offset = undefined;
|
|
219
|
+
for (let pageCount = 0;; pageCount++) {
|
|
220
|
+
if (pageCount >= MAX_SCROLL_PAGES) {
|
|
221
|
+
throw new Error('listDocumentIds: scroll excedeu MAX_SCROLL_PAGES (offset não terminou)');
|
|
222
|
+
}
|
|
223
|
+
const page = await this.client.scroll(this.collection, {
|
|
224
|
+
with_payload: ['documentId'],
|
|
225
|
+
with_vector: false,
|
|
226
|
+
limit: 256,
|
|
227
|
+
...(qFilter !== undefined ? { filter: qFilter } : {}),
|
|
228
|
+
...(offset !== undefined ? { offset } : {}),
|
|
229
|
+
});
|
|
230
|
+
for (const point of page.points) {
|
|
231
|
+
const docId = point.payload?.documentId;
|
|
232
|
+
if (docId === undefined || docId === null)
|
|
233
|
+
continue;
|
|
234
|
+
ids.add(String(docId));
|
|
235
|
+
}
|
|
236
|
+
if (page.next_page_offset === undefined || page.next_page_offset === null)
|
|
237
|
+
break;
|
|
238
|
+
offset = page.next_page_offset;
|
|
239
|
+
}
|
|
240
|
+
return [...ids];
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* {@link VectorStore.removeWhere} — ONE filtered `delete`, no enumeration: Qdrant deletes by filter
|
|
244
|
+
* server-side, so this never scrolls the points it is about to remove.
|
|
245
|
+
*
|
|
246
|
+
* Filter parity with {@link QdrantStore.search} is by construction — the same
|
|
247
|
+
* {@link buildQdrantFilter} call produces the predicate for both, so `metadata.<k>` keying, scalar
|
|
248
|
+
* `match.value`, array `match.any` set-membership and the empty-array deny are the same object here as
|
|
249
|
+
* there.
|
|
250
|
+
*
|
|
251
|
+
* It DOES cost one extra round trip that memory and pgvector do not: Qdrant's delete response carries
|
|
252
|
+
* no count, so the chunk count comes from a preceding `count` (an aggregate — no payloads, no vectors,
|
|
253
|
+
* not an enumeration). Consequence worth knowing: the count is taken just before the delete, so under
|
|
254
|
+
* concurrent writes it is a very slightly stale count of what matched, where memory and pgvector return
|
|
255
|
+
* an exact count from the deleting statement itself. The delete is filter-scoped either way; only the
|
|
256
|
+
* reported number can drift.
|
|
257
|
+
*/
|
|
258
|
+
async removeWhere(filter) {
|
|
259
|
+
assertRemovalFilter(filter);
|
|
260
|
+
if (filterDeniesAll(filter)) {
|
|
261
|
+
return 0;
|
|
262
|
+
}
|
|
263
|
+
const count = this.client.count?.bind(this.client);
|
|
264
|
+
if (count === undefined) {
|
|
265
|
+
throw new Error('QdrantStore.removeWhere requires a client with `count` (the real @qdrant/js-client-rest has ' +
|
|
266
|
+
'it) to report how many chunks it removed, because Qdrant’s delete response carries no count.');
|
|
267
|
+
}
|
|
268
|
+
const qFilter = buildQdrantFilter(filter);
|
|
269
|
+
if (qFilter === undefined) {
|
|
270
|
+
// Unreachable: assertRemovalFilter already rejected the only input that yields undefined.
|
|
271
|
+
throw new Error('removeWhere: filtro vazio escapou do assertRemovalFilter');
|
|
272
|
+
}
|
|
273
|
+
const { count: matched } = await count(this.collection, { filter: qFilter, exact: true });
|
|
274
|
+
await this.client.delete(this.collection, { filter: qFilter, wait: true });
|
|
275
|
+
return matched;
|
|
276
|
+
}
|
|
130
277
|
async listDocuments(filter) {
|
|
131
278
|
const qFilter = buildQdrantFilter(filter);
|
|
132
279
|
const seen = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant-store.js","sourceRoot":"","sources":["../../../src/rag/qdrant-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qdrant-store.js","sourceRoot":"","sources":["../../../src/rag/qdrant-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,151 @@ export interface VectorStore {
|
|
|
47
47
|
* by a metadata `filter`.
|
|
48
48
|
*/
|
|
49
49
|
listDocuments(filter?: Record<string, unknown>): Promise<IndexedDocument[]>;
|
|
50
|
+
/**
|
|
51
|
+
* OPTIONAL capability. Rewrite a document's metadata **without touching its text or its embeddings**.
|
|
52
|
+
*
|
|
53
|
+
* The update path for a dimension that is genuinely mutable — which collection a document belongs to,
|
|
54
|
+
* who may see it, what it was reclassified as — rather than derived from its content. Without this the
|
|
55
|
+
* only way to change one string is {@link VectorStore.upsert}, which needs the text and a fresh
|
|
56
|
+
* embedding, so a consumer whose documents get re-classified has two bad options: re-embed a whole
|
|
57
|
+
* document to change a label (paying the model bill for a reclassification), or refuse to stamp the
|
|
58
|
+
* mutable dimension onto chunks at all and resolve it at query time — turning a filter the index could
|
|
59
|
+
* have applied into a join the caller has to do. The second is what actually happens, and it is what
|
|
60
|
+
* makes an actor-derived retrieval filter unaffordable: such a filter only pays off if the dimensions
|
|
61
|
+
* it filters on are on the chunks AND can be corrected when they change.
|
|
62
|
+
*
|
|
63
|
+
* `patch` is applied to EVERY chunk of the document (metadata is a document-level property that
|
|
64
|
+
* happens to be stored per chunk), with the **shallow JSON Merge Patch** semantics spelled out on
|
|
65
|
+
* {@link MetadataPatch} — in those words because "patch" alone does not tell a caller whether `null`
|
|
66
|
+
* deletes a key or stores a null. It deletes.
|
|
67
|
+
*
|
|
68
|
+
* Resolves to **the number of chunks written**. An unknown `documentId` writes nothing and returns
|
|
69
|
+
* `0` rather than throwing, matching {@link VectorStore.remove}, which is likewise silent on a
|
|
70
|
+
* document that is not there: this is a reconciliation-shaped call, driven by a loop diffing a source
|
|
71
|
+
* of truth against the index, and such a loop races with ingestion and deletion by construction. A
|
|
72
|
+
* patch with no effective keys also writes nothing and returns `0` — the count is chunks *written*,
|
|
73
|
+
* not chunks *matched*.
|
|
74
|
+
*
|
|
75
|
+
* Optional so a host-written store still compiles; feature-detect with `store.updateMetadata?.(…)`.
|
|
76
|
+
* All three stores this package ships implement it.
|
|
77
|
+
*/
|
|
78
|
+
updateMetadata?(documentId: string, patch: MetadataPatch): Promise<number>;
|
|
79
|
+
/**
|
|
80
|
+
* OPTIONAL capability. The distinct source document ids currently indexed, optionally narrowed by a
|
|
81
|
+
* metadata `filter` — {@link VectorStore.listDocuments} without the metadata.
|
|
82
|
+
*
|
|
83
|
+
* Use it when the id set is all you need: a reconciliation diff against your source of truth, a count,
|
|
84
|
+
* a delete list. `listDocuments` has to fetch and JSON-parse a metadata blob **per chunk** just to
|
|
85
|
+
* collapse it to one entry per document, which on a large corpus is most of its cost; implementations
|
|
86
|
+
* here are expected to skip that entirely (a `SELECT DISTINCT` of the id expression, a scroll that
|
|
87
|
+
* transfers one payload key).
|
|
88
|
+
*
|
|
89
|
+
* Filter semantics are **identical to {@link VectorStore.search}** — same builder, empty-array deny
|
|
90
|
+
* included, so an empty-array value yields `[]`.
|
|
91
|
+
*
|
|
92
|
+
* Optional so a host-written store still compiles; feature-detect with `store.listDocumentIds?.(…)`.
|
|
93
|
+
*/
|
|
94
|
+
listDocumentIds?(filter?: Record<string, unknown>): Promise<string[]>;
|
|
95
|
+
/**
|
|
96
|
+
* OPTIONAL capability. Delete every chunk matching a metadata `filter` in ONE store round trip, and
|
|
97
|
+
* resolve the number of **chunks** removed.
|
|
98
|
+
*
|
|
99
|
+
* The collection-maintenance primitive: dropping a collection, evicting a tenant, purging a retired
|
|
100
|
+
* audience. Without it, doing any of those means `listDocuments()` — which materialises per-chunk
|
|
101
|
+
* metadata only to collapse it — followed by one {@link VectorStore.remove} per document, so N+1 round
|
|
102
|
+
* trips where one filtered delete would do. (That the Qdrant adapter already needed a defensive page
|
|
103
|
+
* cap on its `listDocuments` scroll is the tell: the enumeration API was being used for something it is
|
|
104
|
+
* not shaped for.)
|
|
105
|
+
*
|
|
106
|
+
* **What it removes is exactly what a {@link VectorStore.search} carrying the same filter could
|
|
107
|
+
* reach** — every implementation here builds the delete predicate with the very same filter builder its
|
|
108
|
+
* `search` uses, so the two cannot drift. It is chunk-scoped, like `search`: for any corpus built by
|
|
109
|
+
* {@link import('./ingest.js').chunkDocuments} — which stamps the document's metadata on every chunk —
|
|
110
|
+
* that is the same thing as whole documents. In the pathological case where chunks of one document
|
|
111
|
+
* carry *different* metadata, this removes the matching chunks and leaves the rest, which is the safe
|
|
112
|
+
* direction: it can never remove more than the filter reaches.
|
|
113
|
+
*
|
|
114
|
+
* Two guard rails, because this is the only method here that destroys data:
|
|
115
|
+
*
|
|
116
|
+
* - **The empty-array deny is honoured, and it means "delete nothing".** `removeWhere({ audience: [] })`
|
|
117
|
+
* removes zero chunks, exactly as a search with that filter returns none. Treating a deny as "no
|
|
118
|
+
* filter" would delete the whole corpus — precisely inverted from what the caller asked for.
|
|
119
|
+
* - **The filter must be non-empty.** `removeWhere({})` throws {@link UnsafeRemovalError} instead of
|
|
120
|
+
* wiping the store, because an empty object is overwhelmingly more likely to be a filter that got
|
|
121
|
+
* built wrong (a dropped key, an `undefined` scope that vanished on serialisation) than a deliberate
|
|
122
|
+
* request to delete everything. Deliberate mass deletion stays available and stays explicit: loop
|
|
123
|
+
* {@link VectorStore.remove} over {@link VectorStore.listDocumentIds}, or use the backend's own drop.
|
|
124
|
+
*
|
|
125
|
+
* Optional so a host-written store still compiles; feature-detect with `store.removeWhere?.(…)`.
|
|
126
|
+
*/
|
|
127
|
+
removeWhere?(filter: Record<string, unknown>): Promise<number>;
|
|
50
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* A destructive call was refused because its scope could not be trusted. Thrown by
|
|
131
|
+
* {@link VectorStore.removeWhere} — never for a filter that merely matched nothing (that is a legitimate
|
|
132
|
+
* result of `0`), only for one that would have deleted *more* than the caller plausibly meant.
|
|
133
|
+
*/
|
|
134
|
+
export declare class UnsafeRemovalError extends Error {
|
|
135
|
+
/** Why the removal was refused. */
|
|
136
|
+
readonly reason: 'empty-filter';
|
|
137
|
+
constructor(
|
|
138
|
+
/** Why the removal was refused. */
|
|
139
|
+
reason: 'empty-filter', message: string);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Guard for {@link VectorStore.removeWhere}: refuse a filter that scopes nothing. Shared so all three
|
|
143
|
+
* stores refuse the same input with the same error, rather than each deciding for itself how much of the
|
|
144
|
+
* corpus an empty object means.
|
|
145
|
+
*/
|
|
146
|
+
export declare function assertRemovalFilter(filter: Record<string, unknown>): void;
|
|
147
|
+
/**
|
|
148
|
+
* Does this filter deny everything? True when any key carries an **empty array** — no value is a member
|
|
149
|
+
* of the empty set, so nothing can match (see {@link import('./filter.js').matchesFilter}).
|
|
150
|
+
*
|
|
151
|
+
* Every filter builder in this package already encodes that (`matchesFilter` returns false,
|
|
152
|
+
* `buildMetadataWhere` emits a `false` clause, `buildQdrantFilter` emits `any: []`), and the live specs
|
|
153
|
+
* confirm the backends agree. {@link VectorStore.removeWhere} checks it anyway and short-circuits before
|
|
154
|
+
* issuing anything: for the one operation where misreading a deny as "no filter" destroys the corpus, the
|
|
155
|
+
* deny should not depend on a backend's interpretation of an empty set.
|
|
156
|
+
*/
|
|
157
|
+
export declare function filterDeniesAll(filter: Record<string, unknown>): boolean;
|
|
158
|
+
/**
|
|
159
|
+
* A metadata patch, applied by {@link VectorStore.updateMetadata}. **Shallow JSON Merge Patch**
|
|
160
|
+
* (RFC 7396, restricted to one level):
|
|
161
|
+
*
|
|
162
|
+
* - a key with a **non-null** value **replaces** that key's value outright. Values are replaced
|
|
163
|
+
* *wholesale*, arrays and nested objects included — that is the "shallow" part: `{ tags: ['b'] }`
|
|
164
|
+
* makes `tags` exactly `['b']`, it does not append to it, and `{ acl: { read: [] } }` replaces the
|
|
165
|
+
* whole `acl` object rather than merging into it. To edit one field of a nested object, send the
|
|
166
|
+
* nested object you want.
|
|
167
|
+
* - a key with the value **`null` DELETES that key**. This is the one semantic a caller cannot guess and
|
|
168
|
+
* will get wrong in the destructive direction, so: `null` removes, it does not store a JSON null.
|
|
169
|
+
* - a key set to `undefined` is **ignored** — treated as absent, since JSON has no `undefined`. A patch
|
|
170
|
+
* whose every value is `undefined` therefore writes nothing.
|
|
171
|
+
* - a key **not present** in the patch is left alone. That is the point: this is a partial update, not a
|
|
172
|
+
* replacement of the metadata object.
|
|
173
|
+
*
|
|
174
|
+
* A chunk with no metadata at all gains an object on its first patch, and metadata stays an object
|
|
175
|
+
* afterwards — possibly the empty one, if every key was deleted.
|
|
176
|
+
*/
|
|
177
|
+
export type MetadataPatch = Record<string, unknown>;
|
|
178
|
+
/**
|
|
179
|
+
* The keys of a `patch` that will actually be written — every key whose value is not `undefined`. Shared
|
|
180
|
+
* by all three stores so "an empty patch writes nothing and returns 0" means the same thing on each, and
|
|
181
|
+
* so none of them issues a round trip for a no-op.
|
|
182
|
+
*/
|
|
183
|
+
export declare function effectivePatchKeys(patch: MetadataPatch): string[];
|
|
184
|
+
/**
|
|
185
|
+
* Apply a {@link MetadataPatch} to one chunk's metadata, returning the new metadata object. The single
|
|
186
|
+
* definition of the merge, shared by every store that can do the merge in JS — so the semantics cannot
|
|
187
|
+
* drift between adapters. Pure: the input object is never mutated.
|
|
188
|
+
*
|
|
189
|
+
* Always returns an object (never `undefined`), so a patched chunk has metadata even if it had none
|
|
190
|
+
* before, and an all-deleting patch leaves `{}` rather than a hole. `{}` and absent metadata are
|
|
191
|
+
* indistinguishable to {@link import('./filter.js').matchesFilter} and to pgvector's `@>`, so this costs
|
|
192
|
+
* a caller nothing.
|
|
193
|
+
*/
|
|
194
|
+
export declare function applyMetadataPatch(metadata: Record<string, unknown> | undefined, patch: MetadataPatch): Record<string, unknown>;
|
|
51
195
|
/** A distinct source document as seen by the index — its id plus a representative chunk's metadata. */
|
|
52
196
|
export interface IndexedDocument {
|
|
53
197
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../../src/rag/vector-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C;;;;OAIG;IACH,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../../src/rag/vector-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A destructive call was refused because its scope could not be trusted. Thrown by
|
|
3
|
+
* {@link VectorStore.removeWhere} — never for a filter that merely matched nothing (that is a legitimate
|
|
4
|
+
* result of `0`), only for one that would have deleted *more* than the caller plausibly meant.
|
|
5
|
+
*/
|
|
6
|
+
export class UnsafeRemovalError extends Error {
|
|
7
|
+
reason;
|
|
8
|
+
constructor(
|
|
9
|
+
/** Why the removal was refused. */
|
|
10
|
+
reason, message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.reason = reason;
|
|
13
|
+
this.name = 'UnsafeRemovalError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Guard for {@link VectorStore.removeWhere}: refuse a filter that scopes nothing. Shared so all three
|
|
18
|
+
* stores refuse the same input with the same error, rather than each deciding for itself how much of the
|
|
19
|
+
* corpus an empty object means.
|
|
20
|
+
*/
|
|
21
|
+
export function assertRemovalFilter(filter) {
|
|
22
|
+
if (Object.keys(filter).length === 0) {
|
|
23
|
+
throw new UnsafeRemovalError('empty-filter', 'removeWhere refused an empty filter: it would delete every chunk in the store, which is far ' +
|
|
24
|
+
'more likely to be a filter built wrong than a deliberate request. For a deliberate wipe, ' +
|
|
25
|
+
'loop `remove` over `listDocumentIds()`, or drop the table/collection.');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Does this filter deny everything? True when any key carries an **empty array** — no value is a member
|
|
30
|
+
* of the empty set, so nothing can match (see {@link import('./filter.js').matchesFilter}).
|
|
31
|
+
*
|
|
32
|
+
* Every filter builder in this package already encodes that (`matchesFilter` returns false,
|
|
33
|
+
* `buildMetadataWhere` emits a `false` clause, `buildQdrantFilter` emits `any: []`), and the live specs
|
|
34
|
+
* confirm the backends agree. {@link VectorStore.removeWhere} checks it anyway and short-circuits before
|
|
35
|
+
* issuing anything: for the one operation where misreading a deny as "no filter" destroys the corpus, the
|
|
36
|
+
* deny should not depend on a backend's interpretation of an empty set.
|
|
37
|
+
*/
|
|
38
|
+
export function filterDeniesAll(filter) {
|
|
39
|
+
return Object.values(filter).some((value) => Array.isArray(value) && value.length === 0);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The keys of a `patch` that will actually be written — every key whose value is not `undefined`. Shared
|
|
43
|
+
* by all three stores so "an empty patch writes nothing and returns 0" means the same thing on each, and
|
|
44
|
+
* so none of them issues a round trip for a no-op.
|
|
45
|
+
*/
|
|
46
|
+
export function effectivePatchKeys(patch) {
|
|
47
|
+
return Object.keys(patch).filter((key) => patch[key] !== undefined);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Apply a {@link MetadataPatch} to one chunk's metadata, returning the new metadata object. The single
|
|
51
|
+
* definition of the merge, shared by every store that can do the merge in JS — so the semantics cannot
|
|
52
|
+
* drift between adapters. Pure: the input object is never mutated.
|
|
53
|
+
*
|
|
54
|
+
* Always returns an object (never `undefined`), so a patched chunk has metadata even if it had none
|
|
55
|
+
* before, and an all-deleting patch leaves `{}` rather than a hole. `{}` and absent metadata are
|
|
56
|
+
* indistinguishable to {@link import('./filter.js').matchesFilter} and to pgvector's `@>`, so this costs
|
|
57
|
+
* a caller nothing.
|
|
58
|
+
*/
|
|
59
|
+
export function applyMetadataPatch(metadata, patch) {
|
|
60
|
+
const next = { ...metadata };
|
|
61
|
+
for (const key of Object.keys(patch)) {
|
|
62
|
+
const value = patch[key];
|
|
63
|
+
if (value === undefined) {
|
|
64
|
+
continue; // JSON has no `undefined`; treat it as "key not present".
|
|
65
|
+
}
|
|
66
|
+
if (value === null) {
|
|
67
|
+
delete next[key]; // JSON Merge Patch: null REMOVES the key.
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
next[key] = value; // Replaced wholesale — shallow, so no recursive merge.
|
|
71
|
+
}
|
|
72
|
+
return next;
|
|
73
|
+
}
|
|
1
74
|
/** Collapse a chunk id (`${documentId}#<n>`) back to its source document id. */
|
|
2
75
|
export function documentIdOf(chunkId) {
|
|
3
76
|
return chunkId.replace(/#\d+$/, '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../../src/rag/vector-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../../src/rag/vector-store.ts"],"names":[],"mappings":"AAoIA;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGhC;IAFX;IACE,mCAAmC;IAC1B,MAAsB,EAC/B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAgB;QAI/B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA+B;IACjE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,kBAAkB,CAC1B,cAAc,EACd,8FAA8F;YAC5F,2FAA2F;YAC3F,uEAAuE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,MAA+B;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAC3F,CAAC;AAuBD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA6C,EAC7C,KAAoB;IAEpB,MAAM,IAAI,GAA4B,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS,CAAC,0DAA0D;QACtE,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,0CAA0C;YAC5D,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,uDAAuD;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC"}
|