@fastpaca/cria 1.7.4 → 1.7.5
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/dist/cria.d.ts +1 -1
- package/dist/cria.js +1 -1
- package/dist/cria.js.map +1 -1
- package/dist/eval/index.d.ts +1 -1
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/memory/chroma/index.d.ts +4 -4
- package/dist/memory/chroma/index.d.ts.map +1 -1
- package/dist/memory/chroma/index.js +7 -2
- package/dist/memory/chroma/index.js.map +1 -1
- package/dist/memory/index.d.ts +2 -3
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/qdrant/index.d.ts +4 -4
- package/dist/memory/qdrant/index.d.ts.map +1 -1
- package/dist/memory/qdrant/index.js +12 -2
- package/dist/memory/qdrant/index.js.map +1 -1
- package/dist/memory/sqlite-vector.d.ts +3 -3
- package/dist/memory/sqlite-vector.d.ts.map +1 -1
- package/dist/memory/sqlite-vector.js +52 -20
- package/dist/memory/sqlite-vector.js.map +1 -1
- package/dist/memory/vector-store.d.ts +81 -0
- package/dist/memory/vector-store.d.ts.map +1 -0
- package/dist/memory/vector-store.js +73 -0
- package/dist/memory/vector-store.js.map +1 -0
- package/package.json +1 -1
- package/dist/memory/vector-db.d.ts +0 -30
- package/dist/memory/vector-db.d.ts.map +0 -1
- package/dist/memory/vector-db.js +0 -85
- package/dist/memory/vector-db.js.map +0 -1
- package/dist/memory/vector.d.ts +0 -53
- package/dist/memory/vector.d.ts.map +0 -1
- package/dist/memory/vector.js +0 -2
- package/dist/memory/vector.js.map +0 -1
package/dist/cria.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export declare const cria: {
|
|
|
43
43
|
readonly input: typeof input;
|
|
44
44
|
readonly inputLayout: typeof inputLayout;
|
|
45
45
|
readonly summarizer: (config: import("./memory/summarizer").SummarizerConfig) => import("./memory/summarizer").Summarizer;
|
|
46
|
-
readonly vectordb: <T>(store: import("./memory").
|
|
46
|
+
readonly vectordb: <T>(store: import("./memory").VectorStore<T>) => import("./memory").VectorDB<T>;
|
|
47
47
|
};
|
|
48
48
|
export {};
|
|
49
49
|
//# sourceMappingURL=cria.d.ts.map
|
package/dist/cria.js
CHANGED
|
@@ -2,7 +2,7 @@ import { input, inputLayout, merge, prompt } from "./dsl";
|
|
|
2
2
|
import { createMessage, createScope } from "./dsl/strategies";
|
|
3
3
|
import { normalizeTextInput, c as templateC, } from "./dsl/templating";
|
|
4
4
|
import { summarizer } from "./memory/summarizer";
|
|
5
|
-
import { vectordb } from "./memory/vector-
|
|
5
|
+
import { vectordb } from "./memory/vector-store";
|
|
6
6
|
/** Create a standalone message node */
|
|
7
7
|
function message(role, content) {
|
|
8
8
|
return createMessage(role, normalizeTextInput(content));
|
package/dist/cria.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cria.js","sourceRoot":"","sources":["../src/cria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAElB,CAAC,IAAI,SAAS,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cria.js","sourceRoot":"","sources":["../src/cria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAElB,CAAC,IAAI,SAAS,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AASjD,uCAAuC;AACvC,SAAS,OAAO,CACd,IAAgB,EAChB,OAA2B;IAE3B,OAAO,aAAa,CAAC,IAAI,EAAE,kBAAkB,CAAU,OAAO,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,qCAAqC;AACrC,SAAS,KAAK,CACZ,QAAgC,EAChC,IAAyC;IAEzC,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,MAAM;IACN,CAAC,EAAE,SAAS;IACZ,KAAK;IACL,2BAA2B;IAC3B,OAAO;IACP,KAAK;IACL,IAAI,EAAE,CAAC,OAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,MAAM,EAAE,CAAC,OAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC1D,SAAS,EAAE,CAAC,OAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;IAChE,SAAS,EAAE,CAAC,OAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;IAChE,KAAK;IACL,WAAW;IACX,UAAU;IACV,QAAQ;CACA,CAAC"}
|
package/dist/eval/index.d.ts
CHANGED
|
@@ -49,6 +49,6 @@ export declare const cria: {
|
|
|
49
49
|
readonly input: typeof import("..").input;
|
|
50
50
|
readonly inputLayout: typeof import("..").inputLayout;
|
|
51
51
|
readonly summarizer: (config: import("../memory/summarizer").SummarizerConfig) => import("../memory/summarizer").Summarizer;
|
|
52
|
-
readonly vectordb: <T>(store: import("..").
|
|
52
|
+
readonly vectordb: <T>(store: import("..").VectorStore<T>) => import("..").VectorDB<T>;
|
|
53
53
|
};
|
|
54
54
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/eval/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eval/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,IAAI;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eval/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,IAAI;;;;;;;;;;gBAZd,CAAC;UAEE,CAAC;;;;;;;;;;CAUyD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export { cria } from "./cria";
|
|
|
19
19
|
export type { BuilderChild, Prompt, PromptPlugin, ScopeContent, TextInput, } from "./dsl";
|
|
20
20
|
export { BuilderBase, c, input, inputLayout, MessageBuilder, merge, PromptBuilder, prompt, } from "./dsl";
|
|
21
21
|
export { createOtelRenderHooks } from "./instrumentation/otel";
|
|
22
|
-
export type { KVMemory, MemoryEntry, StoredSummary, VectorDBEntry, VectorDBSearchOptions,
|
|
22
|
+
export type { KVMemory, MemoryEntry, StoredSummary, VectorDBEntry, VectorDBSearchOptions, VectorSearchOptions, VectorSearchResult, VectorStore, } from "./memory";
|
|
23
23
|
export { InMemoryStore, StoredSummarySchema, summarizer, VectorDB, vectordb, } from "./memory";
|
|
24
24
|
export type { ChatCompletionsInput, ChatMessage, ChatRole, } from "./protocols/chat-completions";
|
|
25
25
|
export { ChatCompletionsProtocol } from "./protocols/chat-completions";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EACV,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,MAAM,OAAO,CAAC;AACf,OAAO,EACL,WAAW,EACX,CAAC,EACD,KAAK,EACL,WAAW,EACX,cAAc,EACd,KAAK,EACL,aAAa,EACb,MAAM,GACP,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EACV,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,MAAM,OAAO,CAAC;AACf,OAAO,EACL,WAAW,EACX,CAAC,EACD,KAAK,EACL,WAAW,EACX,cAAc,EACd,KAAK,EACL,aAAa,EACb,MAAM,GACP,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,GACZ,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,QAAQ,GACT,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EACV,oBAAoB,EACpB,yBAAyB,EACzB,+BAA+B,EAC/B,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,KAAK,WAAW,EAChB,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,aAAa,EACb,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,QAAQ,EACR,aAAa,EACb,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Collection } from "chromadb";
|
|
2
2
|
import type { MemoryEntry } from "../key-value";
|
|
3
|
-
import type {
|
|
3
|
+
import type { VectorSearchOptions, VectorSearchResult, VectorStore } from "../vector-store";
|
|
4
4
|
/**
|
|
5
5
|
* Function to generate embeddings for text.
|
|
6
6
|
*/
|
|
@@ -15,9 +15,9 @@ export interface ChromaStoreOptions {
|
|
|
15
15
|
embed: EmbeddingFunction;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* VectorStore implementation backed by ChromaDB.
|
|
19
19
|
*
|
|
20
|
-
* This adapter wraps a Chroma collection and implements the
|
|
20
|
+
* This adapter wraps a Chroma collection and implements the VectorStore interface,
|
|
21
21
|
* allowing you to use ChromaDB for RAG workflows with Cria's vectordb helper.
|
|
22
22
|
*
|
|
23
23
|
* @template T - The type of data stored in the collection
|
|
@@ -45,7 +45,7 @@ export interface ChromaStoreOptions {
|
|
|
45
45
|
* cria.prompt().use(retrieval);
|
|
46
46
|
* ```
|
|
47
47
|
*/
|
|
48
|
-
export declare class ChromaStore<T = unknown> implements
|
|
48
|
+
export declare class ChromaStore<T = unknown> implements VectorStore<T> {
|
|
49
49
|
private readonly collection;
|
|
50
50
|
private readonly embedFn;
|
|
51
51
|
constructor(options: ChromaStoreOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/chroma/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAA8B,MAAM,UAAU,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/chroma/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAA8B,MAAM,UAAU,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,gDAAgD;IAChD,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAwDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAEhC,OAAO,EAAE,kBAAkB;IAKjC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAgBhD,GAAG,CACP,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;IA0BV,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASrC,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;CAwDpC"}
|
|
@@ -46,9 +46,9 @@ const ChromaEntrySchema = z
|
|
|
46
46
|
};
|
|
47
47
|
});
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* VectorStore implementation backed by ChromaDB.
|
|
50
50
|
*
|
|
51
|
-
* This adapter wraps a Chroma collection and implements the
|
|
51
|
+
* This adapter wraps a Chroma collection and implements the VectorStore interface,
|
|
52
52
|
* allowing you to use ChromaDB for RAG workflows with Cria's vectordb helper.
|
|
53
53
|
*
|
|
54
54
|
* @template T - The type of data stored in the collection
|
|
@@ -127,6 +127,10 @@ export class ChromaStore {
|
|
|
127
127
|
async search(query, options) {
|
|
128
128
|
const limit = options?.limit ?? 10;
|
|
129
129
|
const threshold = options?.threshold;
|
|
130
|
+
const filter = options?.filter;
|
|
131
|
+
const where = filter === undefined || Object.keys(filter).length === 0
|
|
132
|
+
? undefined
|
|
133
|
+
: filter;
|
|
130
134
|
const queryVector = await this.embedFn(query);
|
|
131
135
|
const response = await this.collection.query({
|
|
132
136
|
queryEmbeddings: [queryVector],
|
|
@@ -136,6 +140,7 @@ export class ChromaStore {
|
|
|
136
140
|
IncludeEnum.metadatas,
|
|
137
141
|
IncludeEnum.distances,
|
|
138
142
|
],
|
|
143
|
+
...(where !== undefined && { where }),
|
|
139
144
|
});
|
|
140
145
|
const ids = response.ids[0] ?? [];
|
|
141
146
|
const documents = response.documents?.[0] ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/chroma/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/chroma/index.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ export type { KVMemory, MemoryEntry } from "./key-value";
|
|
|
2
2
|
export { InMemoryStore } from "./key-value";
|
|
3
3
|
export type { StoredSummary } from "./summarizer";
|
|
4
4
|
export { StoredSummarySchema, summarizer } from "./summarizer";
|
|
5
|
-
export type {
|
|
6
|
-
export
|
|
7
|
-
export { VectorDB, vectordb } from "./vector-db";
|
|
5
|
+
export type { VectorDBEntry, VectorDBSearchOptions, VectorSearchOptions, VectorSearchResult, VectorStore, } from "./vector-store";
|
|
6
|
+
export { VectorDB, vectordb } from "./vector-store";
|
|
8
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/memory/index.js
CHANGED
package/dist/memory/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ/D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { QdrantClient } from "@qdrant/js-client-rest";
|
|
2
2
|
import type { MemoryEntry } from "../key-value";
|
|
3
|
-
import type {
|
|
3
|
+
import type { VectorSearchOptions, VectorSearchResult, VectorStore } from "../vector-store";
|
|
4
4
|
/**
|
|
5
5
|
* Function to generate embeddings for text.
|
|
6
6
|
*/
|
|
@@ -19,9 +19,9 @@ export interface QdrantStoreOptions {
|
|
|
19
19
|
vectorName?: string;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* VectorStore implementation backed by Qdrant.
|
|
23
23
|
*
|
|
24
|
-
* This adapter wraps a Qdrant collection and implements the
|
|
24
|
+
* This adapter wraps a Qdrant collection and implements the VectorStore interface,
|
|
25
25
|
* allowing you to use Qdrant for RAG workflows with Cria's vectordb helper.
|
|
26
26
|
*
|
|
27
27
|
* @template T - The type of data stored in the payload
|
|
@@ -49,7 +49,7 @@ export interface QdrantStoreOptions {
|
|
|
49
49
|
* cria.prompt().use(retrieval);
|
|
50
50
|
* ```
|
|
51
51
|
*/
|
|
52
|
-
export declare class QdrantStore<T = unknown> implements
|
|
52
|
+
export declare class QdrantStore<T = unknown> implements VectorStore<T> {
|
|
53
53
|
private readonly client;
|
|
54
54
|
private readonly collectionName;
|
|
55
55
|
private readonly embedFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/qdrant/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/qdrant/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,KAAK,EAAE,iBAAiB,CAAC;IACzB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEpC,OAAO,EAAE,kBAAkB;IAOjC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAkBhD,GAAG,CACP,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;IA0BV,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYrC,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;CA4CpC"}
|
|
@@ -13,9 +13,9 @@ const QdrantPayloadSchema = z
|
|
|
13
13
|
...(payload.metadata && { metadata: payload.metadata }),
|
|
14
14
|
}));
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* VectorStore implementation backed by Qdrant.
|
|
17
17
|
*
|
|
18
|
-
* This adapter wraps a Qdrant collection and implements the
|
|
18
|
+
* This adapter wraps a Qdrant collection and implements the VectorStore interface,
|
|
19
19
|
* allowing you to use Qdrant for RAG workflows with Cria's vectordb helper.
|
|
20
20
|
*
|
|
21
21
|
* @template T - The type of data stored in the payload
|
|
@@ -104,6 +104,15 @@ export class QdrantStore {
|
|
|
104
104
|
async search(query, options) {
|
|
105
105
|
const limit = options?.limit ?? 10;
|
|
106
106
|
const threshold = options?.threshold;
|
|
107
|
+
const rawFilter = options?.filter;
|
|
108
|
+
const filter = rawFilter === undefined || Object.keys(rawFilter).length === 0
|
|
109
|
+
? undefined
|
|
110
|
+
: {
|
|
111
|
+
must: Object.entries(rawFilter).map(([key, value]) => ({
|
|
112
|
+
key: `metadata.${key}`,
|
|
113
|
+
match: { value },
|
|
114
|
+
})),
|
|
115
|
+
};
|
|
107
116
|
const queryVector = await this.embedFn(query);
|
|
108
117
|
const response = await this.client.search(this.collectionName, {
|
|
109
118
|
vector: this.vectorName
|
|
@@ -112,6 +121,7 @@ export class QdrantStore {
|
|
|
112
121
|
limit,
|
|
113
122
|
with_payload: true,
|
|
114
123
|
...(threshold !== undefined && { score_threshold: threshold }),
|
|
124
|
+
...(filter !== undefined && { filter }),
|
|
115
125
|
});
|
|
116
126
|
const results = [];
|
|
117
127
|
for (const point of response) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/qdrant/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/qdrant/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { MemoryEntry } from "./key-value";
|
|
3
3
|
import type { SqliteConnectionOptions, SqliteDatabase } from "./sqlite";
|
|
4
|
-
import type {
|
|
4
|
+
import type { VectorSearchOptions, VectorSearchResult, VectorStore } from "./vector-store";
|
|
5
5
|
/**
|
|
6
6
|
* Function to generate embeddings for text.
|
|
7
7
|
*/
|
|
@@ -43,7 +43,7 @@ export interface SqliteVectorStoreOptions<T = unknown> {
|
|
|
43
43
|
schema: z.ZodType<T>;
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
* SQLite-backed implementation of
|
|
46
|
+
* SQLite-backed implementation of VectorStore.
|
|
47
47
|
*
|
|
48
48
|
* Uses libSQL vector columns and vector indexes for DB-side similarity search.
|
|
49
49
|
*
|
|
@@ -64,7 +64,7 @@ export interface SqliteVectorStoreOptions<T = unknown> {
|
|
|
64
64
|
* const results = await store.search("What is RAG?", { limit: 5 });
|
|
65
65
|
* ```
|
|
66
66
|
*/
|
|
67
|
-
export declare class SqliteVectorStore<T = unknown> implements
|
|
67
|
+
export declare class SqliteVectorStore<T = unknown> implements VectorStore<T> {
|
|
68
68
|
private readonly db;
|
|
69
69
|
private readonly tableName;
|
|
70
70
|
private readonly embedFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-vector.d.ts","sourceRoot":"","sources":["../../src/memory/sqlite-vector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"sqlite-vector.d.ts","sourceRoot":"","sources":["../../src/memory/sqlite-vector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC,GAAG,OAAO;IACnD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACtB;AAeD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,iBAAiB,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC;YAwBlC,WAAW;YAmBX,WAAW;IAenB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IA4BhD,GAAG,CACP,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;IAuCV,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrC,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IA0GnC;;;OAGG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createClient } from "@libsql/client";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
const metadataSchema = z.object({}).catchall(z.unknown());
|
|
4
|
+
const DEFAULT_SEARCH_LIMIT = 10;
|
|
4
5
|
const sqliteRowSchema = z.object({
|
|
5
6
|
key: z.string(),
|
|
6
7
|
data: z.string(),
|
|
@@ -8,8 +9,11 @@ const sqliteRowSchema = z.object({
|
|
|
8
9
|
updated_at: z.number(),
|
|
9
10
|
metadata: z.string().nullable(),
|
|
10
11
|
});
|
|
12
|
+
const searchRowSchema = sqliteRowSchema.extend({
|
|
13
|
+
distance: z.number(),
|
|
14
|
+
});
|
|
11
15
|
/**
|
|
12
|
-
* SQLite-backed implementation of
|
|
16
|
+
* SQLite-backed implementation of VectorStore.
|
|
13
17
|
*
|
|
14
18
|
* Uses libSQL vector columns and vector indexes for DB-side similarity search.
|
|
15
19
|
*
|
|
@@ -145,12 +149,41 @@ export class SqliteVectorStore {
|
|
|
145
149
|
async search(query, options) {
|
|
146
150
|
await this.ensureTable();
|
|
147
151
|
await this.ensureIndex();
|
|
148
|
-
const limit = Math.max(0, Math.trunc(options?.limit ??
|
|
152
|
+
const limit = Math.max(0, Math.trunc(options?.limit ?? DEFAULT_SEARCH_LIMIT));
|
|
153
|
+
if (limit === 0) {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
149
156
|
const threshold = options?.threshold;
|
|
157
|
+
const filterEntries = options?.filter
|
|
158
|
+
? Object.entries(options.filter)
|
|
159
|
+
: undefined;
|
|
150
160
|
const queryVector = this.embeddingSchema.parse(await this.embedFn(query));
|
|
151
161
|
const serializedQuery = JSON.stringify(queryVector);
|
|
152
|
-
|
|
153
|
-
|
|
162
|
+
let sql = `
|
|
163
|
+
SELECT
|
|
164
|
+
t.key,
|
|
165
|
+
t.data,
|
|
166
|
+
t.created_at,
|
|
167
|
+
t.updated_at,
|
|
168
|
+
t.metadata,
|
|
169
|
+
vector_distance_cos(t.embedding, vector32(?)) AS distance
|
|
170
|
+
FROM vector_top_k(
|
|
171
|
+
?,
|
|
172
|
+
vector32(?),
|
|
173
|
+
CAST(? AS INTEGER)
|
|
174
|
+
) AS i
|
|
175
|
+
JOIN ${this.tableName} AS t ON t.rowid = i.id
|
|
176
|
+
ORDER BY distance ASC
|
|
177
|
+
`;
|
|
178
|
+
const args = [
|
|
179
|
+
serializedQuery,
|
|
180
|
+
`${this.tableName}_vector_idx`,
|
|
181
|
+
serializedQuery,
|
|
182
|
+
limit,
|
|
183
|
+
];
|
|
184
|
+
if (filterEntries && filterEntries.length > 0) {
|
|
185
|
+
const predicates = filterEntries.map(() => "json_extract(COALESCE(t.metadata, '{}'), ?) = ?");
|
|
186
|
+
sql = `
|
|
154
187
|
SELECT
|
|
155
188
|
t.key,
|
|
156
189
|
t.data,
|
|
@@ -158,25 +191,24 @@ export class SqliteVectorStore {
|
|
|
158
191
|
t.updated_at,
|
|
159
192
|
t.metadata,
|
|
160
193
|
vector_distance_cos(t.embedding, vector32(?)) AS distance
|
|
161
|
-
FROM
|
|
162
|
-
|
|
163
|
-
vector32(?),
|
|
164
|
-
CAST(? AS INTEGER)
|
|
165
|
-
) AS i
|
|
166
|
-
JOIN ${this.tableName} AS t ON t.rowid = i.id
|
|
194
|
+
FROM ${this.tableName} AS t
|
|
195
|
+
WHERE ${predicates.join(" AND ")}
|
|
167
196
|
ORDER BY distance ASC
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
197
|
+
LIMIT CAST(? AS INTEGER)
|
|
198
|
+
`;
|
|
199
|
+
args.length = 0;
|
|
200
|
+
args.push(serializedQuery);
|
|
201
|
+
for (const [key, value] of filterEntries) {
|
|
202
|
+
args.push(`$.${key}`);
|
|
203
|
+
args.push(value);
|
|
204
|
+
}
|
|
205
|
+
args.push(limit);
|
|
206
|
+
}
|
|
207
|
+
const result = await this.db.execute({
|
|
208
|
+
sql,
|
|
209
|
+
args,
|
|
175
210
|
});
|
|
176
211
|
const results = [];
|
|
177
|
-
const searchRowSchema = sqliteRowSchema.extend({
|
|
178
|
-
distance: z.number(),
|
|
179
|
-
});
|
|
180
212
|
for (const row of result.rows) {
|
|
181
213
|
const parsedRow = searchRowSchema.parse(row);
|
|
182
214
|
const score = Math.max(0, Math.min(1, 1 - parsedRow.distance / 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-vector.js","sourceRoot":"","sources":["../../src/memory/sqlite-vector.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sqlite-vector.js","sourceRoot":"","sources":["../../src/memory/sqlite-vector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector store contracts and VectorDB helper.
|
|
3
|
+
*/
|
|
4
|
+
import type { PromptPlugin } from "../dsl/builder";
|
|
5
|
+
import type { MaybePromise } from "../types";
|
|
6
|
+
import type { KVMemory, MemoryEntry } from "./key-value";
|
|
7
|
+
/**
|
|
8
|
+
* Search result from a vector store query.
|
|
9
|
+
*/
|
|
10
|
+
export interface VectorSearchResult<T = unknown> {
|
|
11
|
+
/** The matching entry */
|
|
12
|
+
entry: MemoryEntry<T>;
|
|
13
|
+
/** The key of the matching entry */
|
|
14
|
+
key: string;
|
|
15
|
+
/** Similarity score (0-1, higher is more similar) */
|
|
16
|
+
score: number;
|
|
17
|
+
}
|
|
18
|
+
export type VectorSearchFilterValue = string | number | boolean;
|
|
19
|
+
export type VectorSearchFilter = Record<string, VectorSearchFilterValue>;
|
|
20
|
+
/**
|
|
21
|
+
* Options for vector search operations.
|
|
22
|
+
*/
|
|
23
|
+
export interface VectorSearchOptions {
|
|
24
|
+
/** Maximum number of results to return. Default: 10 */
|
|
25
|
+
limit?: number;
|
|
26
|
+
/** Minimum similarity threshold (0-1). Results below this are excluded. */
|
|
27
|
+
threshold?: number;
|
|
28
|
+
/** Metadata equality filter to apply at the store layer. */
|
|
29
|
+
filter?: VectorSearchFilter;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Vector store interface for semantic search.
|
|
33
|
+
*
|
|
34
|
+
* Extends the KV store interface with vector-based similarity search.
|
|
35
|
+
* Useful for RAG (Retrieval Augmented Generation), semantic memory,
|
|
36
|
+
* and finding related content.
|
|
37
|
+
*
|
|
38
|
+
* @template T - The type of data stored in the store
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // Implementation would use embeddings from OpenAI, Cohere, etc.
|
|
43
|
+
* class PineconeStore<T> implements VectorStore<T> {
|
|
44
|
+
* async search(query: string, options?: VectorSearchOptions) {
|
|
45
|
+
* const embedding = await this.embedder(query);
|
|
46
|
+
* return this.client.query(embedding, options);
|
|
47
|
+
* }
|
|
48
|
+
* // ... other methods
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export interface VectorStore<T = unknown> extends KVMemory<T> {
|
|
53
|
+
/**
|
|
54
|
+
* Search for entries semantically similar to the query.
|
|
55
|
+
* @param query - The search query (will be embedded)
|
|
56
|
+
* @param options - Search options
|
|
57
|
+
* @returns Matching entries sorted by similarity (highest first)
|
|
58
|
+
*/
|
|
59
|
+
search(query: string, options?: VectorSearchOptions): MaybePromise<VectorSearchResult<T>[]>;
|
|
60
|
+
}
|
|
61
|
+
export interface VectorDBSearchOptions extends VectorSearchOptions {
|
|
62
|
+
query: string;
|
|
63
|
+
}
|
|
64
|
+
export interface VectorDBEntry<T> {
|
|
65
|
+
id: string;
|
|
66
|
+
data: T;
|
|
67
|
+
metadata?: Record<string, unknown>;
|
|
68
|
+
}
|
|
69
|
+
export declare class VectorDB<T> {
|
|
70
|
+
private readonly store;
|
|
71
|
+
constructor(store: VectorStore<T>);
|
|
72
|
+
plugin<P = unknown>(options: VectorDBSearchOptions): PromptPlugin<P>;
|
|
73
|
+
index(options: VectorDBEntry<T>): Promise<void>;
|
|
74
|
+
load(options: {
|
|
75
|
+
id: string;
|
|
76
|
+
}): Promise<MemoryEntry<T> | null>;
|
|
77
|
+
search(query: string, options?: VectorSearchOptions): Promise<VectorSearchResult<T>[]>;
|
|
78
|
+
renderSearch(options: VectorDBSearchOptions): Promise<string>;
|
|
79
|
+
}
|
|
80
|
+
export declare const vectordb: <T>(store: VectorStore<T>) => VectorDB<T>;
|
|
81
|
+
//# sourceMappingURL=vector-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../src/memory/vector-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAqB,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,yBAAyB;IACzB,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAChE,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC3D;;;;;OAKG;IACH,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA4CD,qBAAa,QAAQ,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;gBAE3B,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAIjC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,YAAY,CAAC,CAAC,CAAC;IAI9D,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,IAAI,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAI7D,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IAe7B,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;CAUpE;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,OAAO,WAAW,CAAC,CAAC,CAAC,KAAG,QAAQ,CAAC,CAAC,CAE7D,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector store contracts and VectorDB helper.
|
|
3
|
+
*/
|
|
4
|
+
import { createMessage, createScope } from "../dsl/strategies";
|
|
5
|
+
import { textPart } from "../dsl/templating";
|
|
6
|
+
const DEFAULT_SEARCH_LIMIT = 10;
|
|
7
|
+
const EMPTY_SEARCH_RESULTS_MESSAGE = "Vector search returned no results.";
|
|
8
|
+
const formatResults = (results) => {
|
|
9
|
+
if (results.length === 0) {
|
|
10
|
+
return EMPTY_SEARCH_RESULTS_MESSAGE;
|
|
11
|
+
}
|
|
12
|
+
const sections = [];
|
|
13
|
+
for (const [index, result] of results.entries()) {
|
|
14
|
+
const content = typeof result.entry.data === "string"
|
|
15
|
+
? result.entry.data
|
|
16
|
+
: JSON.stringify(result.entry.data, null, 2);
|
|
17
|
+
sections.push(`[${index + 1}] (score: ${result.score.toFixed(3)})\n${content}`);
|
|
18
|
+
}
|
|
19
|
+
return sections.join("\n\n");
|
|
20
|
+
};
|
|
21
|
+
class VectorDBPlugin {
|
|
22
|
+
db;
|
|
23
|
+
options;
|
|
24
|
+
constructor(db, options) {
|
|
25
|
+
this.db = db;
|
|
26
|
+
this.options = options;
|
|
27
|
+
}
|
|
28
|
+
async render() {
|
|
29
|
+
const content = await this.db.renderSearch(this.options);
|
|
30
|
+
const message = createMessage("user", [
|
|
31
|
+
textPart(content),
|
|
32
|
+
]);
|
|
33
|
+
return createScope([message]);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class VectorDB {
|
|
37
|
+
store;
|
|
38
|
+
constructor(store) {
|
|
39
|
+
this.store = store;
|
|
40
|
+
}
|
|
41
|
+
plugin(options) {
|
|
42
|
+
return new VectorDBPlugin(this, options);
|
|
43
|
+
}
|
|
44
|
+
async index(options) {
|
|
45
|
+
await this.store.set(options.id, options.data, options.metadata);
|
|
46
|
+
}
|
|
47
|
+
async load(options) {
|
|
48
|
+
return await this.store.get(options.id);
|
|
49
|
+
}
|
|
50
|
+
async search(query, options = {}) {
|
|
51
|
+
const limit = Math.max(0, Math.trunc(options.limit ?? DEFAULT_SEARCH_LIMIT));
|
|
52
|
+
if (limit === 0) {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
return await this.store.search(query, {
|
|
56
|
+
...options,
|
|
57
|
+
limit,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async renderSearch(options) {
|
|
61
|
+
const { query: rawQuery, ...searchOptions } = options;
|
|
62
|
+
const query = rawQuery.trim();
|
|
63
|
+
if (!query) {
|
|
64
|
+
throw new Error("VectorDB search requires a non-empty query.");
|
|
65
|
+
}
|
|
66
|
+
const results = await this.search(query, searchOptions);
|
|
67
|
+
return formatResults(results);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export const vectordb = (store) => {
|
|
71
|
+
return new VectorDB(store);
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=vector-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../src/memory/vector-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA2E7C,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,4BAA4B,GAAG,oCAAoC,CAAC;AAE1E,MAAM,aAAa,GAAG,CAAI,OAAgC,EAAU,EAAE;IACpE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YACnC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;YACnB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEjD,QAAQ,CAAC,IAAI,CACX,IAAI,KAAK,GAAG,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CACjE,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,cAAc;IACD,EAAE,CAAc;IAChB,OAAO,CAAwB;IAEhD,YAAY,EAAe,EAAE,OAA8B;QACzD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,aAAa,CAAuB,MAAM,EAAE;YAC1D,QAAQ,CAAuB,OAAO,CAAC;SACxC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;CACF;AAED,MAAM,OAAO,QAAQ;IACF,KAAK,CAAiB;IAEvC,YAAY,KAAqB;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAc,OAA8B;QAChD,OAAO,IAAI,cAAc,CAAO,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAyB;QACnC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAuB;QAChC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,UAA+B,EAAE;QAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAClD,CAAC;QACF,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YACpC,GAAG,OAAO;YACV,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA8B;QAC/C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;QACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACxD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,KAAqB,EAAe,EAAE;IAChE,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vector DB helper for shared retrieval + indexing.
|
|
3
|
-
*/
|
|
4
|
-
import type { PromptPlugin } from "../dsl/builder";
|
|
5
|
-
import type { MemoryEntry } from "./key-value";
|
|
6
|
-
import type { VectorMemory, VectorSearchResult } from "./vector";
|
|
7
|
-
type VectorDBFilterValue = string | number | boolean;
|
|
8
|
-
export interface VectorDBSearchOptions {
|
|
9
|
-
query: string;
|
|
10
|
-
limit?: number;
|
|
11
|
-
filter?: Record<string, VectorDBFilterValue>;
|
|
12
|
-
}
|
|
13
|
-
export interface VectorDBEntry<T> {
|
|
14
|
-
id: string;
|
|
15
|
-
data: T;
|
|
16
|
-
metadata?: Record<string, unknown>;
|
|
17
|
-
}
|
|
18
|
-
export declare class VectorDB<T> {
|
|
19
|
-
private readonly store;
|
|
20
|
-
constructor(store: VectorMemory<T>);
|
|
21
|
-
plugin<P = unknown>(options: VectorDBSearchOptions): PromptPlugin<P>;
|
|
22
|
-
index(options: VectorDBEntry<T>): Promise<void>;
|
|
23
|
-
load(options: {
|
|
24
|
-
id: string;
|
|
25
|
-
}): Promise<MemoryEntry<T> | null>;
|
|
26
|
-
search(query: string, limit: number): Promise<VectorSearchResult<T>[]>;
|
|
27
|
-
}
|
|
28
|
-
export declare const vectordb: <T>(store: VectorMemory<T>) => VectorDB<T>;
|
|
29
|
-
export {};
|
|
30
|
-
//# sourceMappingURL=vector-db.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-db.d.ts","sourceRoot":"","sources":["../../src/memory/vector-db.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEjE,KAAK,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA6ED,qBAAa,QAAQ,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;gBAE5B,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAIlC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,YAAY,CAAC,CAAC,CAAC;IAI9D,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,IAAI,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAI7D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;CAG7E;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,OAAO,YAAY,CAAC,CAAC,CAAC,KAAG,QAAQ,CAAC,CAAC,CAE9D,CAAC"}
|
package/dist/memory/vector-db.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vector DB helper for shared retrieval + indexing.
|
|
3
|
-
*/
|
|
4
|
-
import { createMessage, createScope } from "../dsl/strategies";
|
|
5
|
-
import { textPart } from "../dsl/templating";
|
|
6
|
-
const DEFAULT_SEARCH_LIMIT = 10;
|
|
7
|
-
const DEFAULT_FILTER_OVERFETCH_MULTIPLIER = 5;
|
|
8
|
-
const formatEntry = (data) => {
|
|
9
|
-
if (typeof data === "string") {
|
|
10
|
-
return data;
|
|
11
|
-
}
|
|
12
|
-
return JSON.stringify(data, null, 2);
|
|
13
|
-
};
|
|
14
|
-
const matchesFilter = (result, filter) => {
|
|
15
|
-
const metadata = result.entry.metadata;
|
|
16
|
-
if (!metadata) {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
for (const [key, value] of Object.entries(filter)) {
|
|
20
|
-
if (metadata[key] !== value) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return true;
|
|
25
|
-
};
|
|
26
|
-
const formatResults = (results) => {
|
|
27
|
-
if (results.length === 0) {
|
|
28
|
-
return "Vector search returned no results.";
|
|
29
|
-
}
|
|
30
|
-
return results
|
|
31
|
-
.map((result, index) => {
|
|
32
|
-
return `[${index + 1}] (score: ${result.score.toFixed(3)})\n${formatEntry(result.entry.data)}`;
|
|
33
|
-
})
|
|
34
|
-
.join("\n\n");
|
|
35
|
-
};
|
|
36
|
-
class VectorDBPlugin {
|
|
37
|
-
db;
|
|
38
|
-
options;
|
|
39
|
-
constructor(db, options) {
|
|
40
|
-
this.db = db;
|
|
41
|
-
this.options = options;
|
|
42
|
-
}
|
|
43
|
-
async render() {
|
|
44
|
-
const query = this.options.query.trim();
|
|
45
|
-
if (!query) {
|
|
46
|
-
throw new Error("VectorDB search requires a non-empty query.");
|
|
47
|
-
}
|
|
48
|
-
const filter = this.options.filter;
|
|
49
|
-
const limit = this.options.limit ?? DEFAULT_SEARCH_LIMIT;
|
|
50
|
-
const searchLimit = filter
|
|
51
|
-
? limit * DEFAULT_FILTER_OVERFETCH_MULTIPLIER
|
|
52
|
-
: limit;
|
|
53
|
-
const rawResults = await this.db.search(query, searchLimit);
|
|
54
|
-
const results = filter
|
|
55
|
-
? rawResults.filter((result) => matchesFilter(result, filter))
|
|
56
|
-
: rawResults;
|
|
57
|
-
const content = formatResults(results.slice(0, limit));
|
|
58
|
-
const message = createMessage("user", [
|
|
59
|
-
textPart(content),
|
|
60
|
-
]);
|
|
61
|
-
return createScope([message]);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
export class VectorDB {
|
|
65
|
-
store;
|
|
66
|
-
constructor(store) {
|
|
67
|
-
this.store = store;
|
|
68
|
-
}
|
|
69
|
-
plugin(options) {
|
|
70
|
-
return new VectorDBPlugin(this, options);
|
|
71
|
-
}
|
|
72
|
-
async index(options) {
|
|
73
|
-
await this.store.set(options.id, options.data, options.metadata);
|
|
74
|
-
}
|
|
75
|
-
async load(options) {
|
|
76
|
-
return await this.store.get(options.id);
|
|
77
|
-
}
|
|
78
|
-
async search(query, limit) {
|
|
79
|
-
return await this.store.search(query, { limit });
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
export const vectordb = (store) => {
|
|
83
|
-
return new VectorDB(store);
|
|
84
|
-
};
|
|
85
|
-
//# sourceMappingURL=vector-db.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-db.js","sourceRoot":"","sources":["../../src/memory/vector-db.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/vector.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { MaybePromise } from "../types";
|
|
2
|
-
import type { KVMemory, MemoryEntry } from "./key-value";
|
|
3
|
-
/**
|
|
4
|
-
* Search result from a vector memory query.
|
|
5
|
-
*/
|
|
6
|
-
export interface VectorSearchResult<T = unknown> {
|
|
7
|
-
/** The matching entry */
|
|
8
|
-
entry: MemoryEntry<T>;
|
|
9
|
-
/** The key of the matching entry */
|
|
10
|
-
key: string;
|
|
11
|
-
/** Similarity score (0-1, higher is more similar) */
|
|
12
|
-
score: number;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Options for vector search operations.
|
|
16
|
-
*/
|
|
17
|
-
export interface VectorSearchOptions {
|
|
18
|
-
/** Maximum number of results to return. Default: 10 */
|
|
19
|
-
limit?: number;
|
|
20
|
-
/** Minimum similarity threshold (0-1). Results below this are excluded. */
|
|
21
|
-
threshold?: number;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Vector memory interface for semantic search.
|
|
25
|
-
*
|
|
26
|
-
* Extends the KV memory interface with vector-based similarity search.
|
|
27
|
-
* Useful for RAG (Retrieval Augmented Generation), semantic memory,
|
|
28
|
-
* and finding related content.
|
|
29
|
-
*
|
|
30
|
-
* @template T - The type of data stored in the memory
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* ```typescript
|
|
34
|
-
* // Implementation would use embeddings from OpenAI, Cohere, etc.
|
|
35
|
-
* class PineconeStore<T> implements VectorMemory<T> {
|
|
36
|
-
* async search(query: string, options?: VectorSearchOptions) {
|
|
37
|
-
* const embedding = await this.embedder(query);
|
|
38
|
-
* return this.client.query(embedding, options);
|
|
39
|
-
* }
|
|
40
|
-
* // ... other methods
|
|
41
|
-
* }
|
|
42
|
-
* ```
|
|
43
|
-
*/
|
|
44
|
-
export interface VectorMemory<T = unknown> extends KVMemory<T> {
|
|
45
|
-
/**
|
|
46
|
-
* Search for entries semantically similar to the query.
|
|
47
|
-
* @param query - The search query (will be embedded)
|
|
48
|
-
* @param options - Search options
|
|
49
|
-
* @returns Matching entries sorted by similarity (highest first)
|
|
50
|
-
*/
|
|
51
|
-
search(query: string, options?: VectorSearchOptions): MaybePromise<VectorSearchResult<T>[]>;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=vector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../src/memory/vector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,yBAAyB;IACzB,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC5D;;;;;OAKG;IACH,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1C"}
|
package/dist/memory/vector.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../src/memory/vector.ts"],"names":[],"mappings":""}
|