@anvia/pinecone 0.3.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Indra Zulfi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,51 @@
1
+ import { VectorFilter, VectorSearchIndex, VectorSearchRequest, VectorSearchResult, VectorSearchToolOptions } from '@anvia/core/vector-store';
2
+ import { VectorMetadata, EmbeddingModel, EmbeddedDocument } from '@anvia/core/embeddings';
3
+ import { Tool } from '@anvia/core/tool';
4
+
5
+ declare function filterToPineconeFilter(filter: VectorFilter | undefined): unknown;
6
+
7
+ type PineconeMetric = "cosine" | "euclidean" | "dotproduct";
8
+ type PineconeClientLike = {
9
+ listIndexes(): Promise<unknown>;
10
+ createIndex(options: Record<string, unknown>): Promise<unknown>;
11
+ index(indexName: string): PineconeIndexLike;
12
+ };
13
+ type PineconeIndexLike = {
14
+ namespace(namespace: string): PineconeNamespaceLike;
15
+ };
16
+ type PineconeNamespaceLike = {
17
+ upsert(vectors: Array<Record<string, unknown>>): Promise<unknown>;
18
+ query(options: Record<string, unknown>): Promise<unknown>;
19
+ };
20
+ type PineconeVectorStoreConnectOptions = {
21
+ client?: PineconeClientLike | undefined;
22
+ indexName: string;
23
+ namespace?: string | undefined;
24
+ createIfMissing?: boolean | undefined;
25
+ metric?: PineconeMetric | undefined;
26
+ };
27
+
28
+ declare class PineconeVectorIndex<T, Metadata extends VectorMetadata = VectorMetadata> implements VectorSearchIndex<T, Metadata> {
29
+ private readonly model;
30
+ private readonly namespace;
31
+ constructor(model: EmbeddingModel, namespace: PineconeNamespaceLike);
32
+ search(request: VectorSearchRequest): Promise<Array<VectorSearchResult<T, Metadata>>>;
33
+ searchIds(request: VectorSearchRequest): Promise<Array<{
34
+ score: number;
35
+ id: string;
36
+ }>>;
37
+ asTool(options: VectorSearchToolOptions): Tool<{
38
+ query: string;
39
+ topK?: number;
40
+ }, unknown>;
41
+ }
42
+
43
+ declare class PineconeVectorStore<T, Metadata extends VectorMetadata = VectorMetadata> {
44
+ private readonly namespace;
45
+ private constructor();
46
+ static connect<T, Metadata extends VectorMetadata = VectorMetadata>(options: PineconeVectorStoreConnectOptions): Promise<PineconeVectorStore<T, Metadata>>;
47
+ upsertDocuments(documents: Array<EmbeddedDocument<T, Metadata>>): Promise<void>;
48
+ index(model: EmbeddingModel): PineconeVectorIndex<T, Metadata>;
49
+ }
50
+
51
+ export { type PineconeClientLike, type PineconeIndexLike, type PineconeMetric, type PineconeNamespaceLike, PineconeVectorIndex, PineconeVectorStore, type PineconeVectorStoreConnectOptions, filterToPineconeFilter };
package/dist/index.js ADDED
@@ -0,0 +1,183 @@
1
+ // src/filters.ts
2
+ function filterToPineconeFilter(filter) {
3
+ if (filter === void 0) {
4
+ return void 0;
5
+ }
6
+ switch (filter.type) {
7
+ case "eq":
8
+ return { [filter.key]: { $eq: filter.value } };
9
+ case "gt":
10
+ return { [filter.key]: { $gt: filter.value } };
11
+ case "lt":
12
+ return { [filter.key]: { $lt: filter.value } };
13
+ case "and":
14
+ return { $and: filter.filters.map(filterToPineconeFilter) };
15
+ case "or":
16
+ return { $or: filter.filters.map(filterToPineconeFilter) };
17
+ }
18
+ }
19
+
20
+ // src/search-index.ts
21
+ import { embedText } from "@anvia/core/embeddings";
22
+ import {
23
+ createVectorSearchTool
24
+ } from "@anvia/core/vector-store";
25
+
26
+ // src/helpers.ts
27
+ import { createHash } from "crypto";
28
+
29
+ // src/types.ts
30
+ var documentIdMetadataKey = "__anvia_document_id";
31
+ var documentMetadataKey = "__anvia_document";
32
+ var reservedMetadataPrefix = "__anvia_";
33
+
34
+ // src/helpers.ts
35
+ function pointId(id) {
36
+ return createHash("sha256").update(id).digest("hex").slice(0, 32);
37
+ }
38
+ function serializeDocument(document) {
39
+ return typeof document === "string" ? document : JSON.stringify(document);
40
+ }
41
+ function parseDocument(document) {
42
+ if (document === null || document === void 0) {
43
+ return "";
44
+ }
45
+ if (typeof document !== "string") {
46
+ return document;
47
+ }
48
+ try {
49
+ return JSON.parse(document);
50
+ } catch {
51
+ return document;
52
+ }
53
+ }
54
+ function assertNoReservedMetadata(metadata) {
55
+ for (const key of Object.keys(metadata ?? {})) {
56
+ if (key.startsWith(reservedMetadataPrefix)) {
57
+ throw new Error(`Metadata key ${key} is reserved for Anvia Pinecone payloads`);
58
+ }
59
+ }
60
+ }
61
+ function pineconeVectors(document) {
62
+ if (document.embeddings.length === 0) {
63
+ throw new Error(`Document ${document.id} has no embeddings`);
64
+ }
65
+ assertNoReservedMetadata(document.metadata);
66
+ return document.embeddings.map((embedding, index) => {
67
+ const logicalId = document.embeddings.length === 1 ? document.id : `${document.id}#embedding:${index}`;
68
+ return {
69
+ id: pointId(logicalId),
70
+ values: embedding.vector,
71
+ metadata: {
72
+ [documentIdMetadataKey]: document.id,
73
+ [documentMetadataKey]: serializeDocument(document.document),
74
+ ...document.metadata ?? {}
75
+ }
76
+ };
77
+ });
78
+ }
79
+ function parseQueryResults(response, threshold) {
80
+ const raw = response;
81
+ const matches = raw.matches ?? [];
82
+ const byId = /* @__PURE__ */ new Map();
83
+ for (const match of matches) {
84
+ const score = match.score ?? 0;
85
+ if (threshold !== void 0 && score < threshold) {
86
+ continue;
87
+ }
88
+ const id = String(match.metadata?.[documentIdMetadataKey] ?? match.id);
89
+ const result = {
90
+ id,
91
+ score,
92
+ document: parseDocument(match.metadata?.[documentMetadataKey]),
93
+ ...metadataFromPayload(match.metadata)
94
+ };
95
+ const current = byId.get(id);
96
+ if (current === void 0 || result.score > current.score) {
97
+ byId.set(id, result);
98
+ }
99
+ }
100
+ return [...byId.values()];
101
+ }
102
+ async function defaultPineconeClient() {
103
+ const { Pinecone } = await import("@pinecone-database/pinecone");
104
+ return new Pinecone();
105
+ }
106
+ async function ensureIndex(client, indexName, metric) {
107
+ try {
108
+ await client.listIndexes();
109
+ } catch {
110
+ return;
111
+ }
112
+ try {
113
+ await client.createIndex({
114
+ name: indexName,
115
+ dimension: void 0,
116
+ metric,
117
+ spec: { serverless: { cloud: "aws", region: "us-east-1" } },
118
+ waitUntilReady: true
119
+ });
120
+ } catch {
121
+ }
122
+ }
123
+ function metadataFromPayload(payload) {
124
+ const metadata = Object.fromEntries(
125
+ Object.entries(payload ?? {}).filter(([key]) => !key.startsWith(reservedMetadataPrefix))
126
+ );
127
+ return Object.keys(metadata).length === 0 ? {} : { metadata };
128
+ }
129
+
130
+ // src/search-index.ts
131
+ var PineconeVectorIndex = class {
132
+ constructor(model, namespace) {
133
+ this.model = model;
134
+ this.namespace = namespace;
135
+ }
136
+ model;
137
+ namespace;
138
+ async search(request) {
139
+ const queryEmbedding = await embedText(this.model, request.query);
140
+ const response = await this.namespace.query({
141
+ vector: queryEmbedding.vector,
142
+ topK: request.topK,
143
+ filter: filterToPineconeFilter(request.filter),
144
+ includeMetadata: true
145
+ });
146
+ return parseQueryResults(response, request.threshold);
147
+ }
148
+ async searchIds(request) {
149
+ return (await this.search(request)).map(({ score, id }) => ({ score, id }));
150
+ }
151
+ asTool(options) {
152
+ return createVectorSearchTool(this, options);
153
+ }
154
+ };
155
+
156
+ // src/store.ts
157
+ var PineconeVectorStore = class _PineconeVectorStore {
158
+ constructor(namespace) {
159
+ this.namespace = namespace;
160
+ }
161
+ namespace;
162
+ static async connect(options) {
163
+ const client = options.client ?? await defaultPineconeClient();
164
+ if (options.createIfMissing !== false) {
165
+ await ensureIndex(client, options.indexName, options.metric ?? "cosine");
166
+ }
167
+ const namespace = client.index(options.indexName).namespace(options.namespace ?? "");
168
+ return new _PineconeVectorStore(namespace);
169
+ }
170
+ async upsertDocuments(documents) {
171
+ const vectors = documents.flatMap((document) => pineconeVectors(document));
172
+ await this.namespace.upsert(vectors);
173
+ }
174
+ index(model) {
175
+ return new PineconeVectorIndex(model, this.namespace);
176
+ }
177
+ };
178
+ export {
179
+ PineconeVectorIndex,
180
+ PineconeVectorStore,
181
+ filterToPineconeFilter
182
+ };
183
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/filters.ts","../src/search-index.ts","../src/helpers.ts","../src/types.ts","../src/store.ts"],"sourcesContent":["import type { VectorFilter } from \"@anvia/core/vector-store\";\n\nexport function filterToPineconeFilter(filter: VectorFilter | undefined): unknown {\n if (filter === undefined) {\n return undefined;\n }\n\n switch (filter.type) {\n case \"eq\":\n return { [filter.key]: { $eq: filter.value } };\n case \"gt\":\n return { [filter.key]: { $gt: filter.value } };\n case \"lt\":\n return { [filter.key]: { $lt: filter.value } };\n case \"and\":\n return { $and: filter.filters.map(filterToPineconeFilter) };\n case \"or\":\n return { $or: filter.filters.map(filterToPineconeFilter) };\n }\n}\n","import { type EmbeddingModel, embedText, type VectorMetadata } from \"@anvia/core/embeddings\";\nimport type { Tool } from \"@anvia/core/tool\";\nimport {\n createVectorSearchTool,\n type VectorSearchIndex,\n type VectorSearchRequest,\n type VectorSearchResult,\n type VectorSearchToolOptions,\n} from \"@anvia/core/vector-store\";\nimport { filterToPineconeFilter } from \"./filters.js\";\nimport { parseQueryResults } from \"./helpers.js\";\nimport type { PineconeNamespaceLike } from \"./types.js\";\n\nexport class PineconeVectorIndex<T, Metadata extends VectorMetadata = VectorMetadata>\n implements VectorSearchIndex<T, Metadata>\n{\n constructor(\n private readonly model: EmbeddingModel,\n private readonly namespace: PineconeNamespaceLike,\n ) {}\n\n async search(request: VectorSearchRequest): Promise<Array<VectorSearchResult<T, Metadata>>> {\n const queryEmbedding = await embedText(this.model, request.query);\n const response = await this.namespace.query({\n vector: queryEmbedding.vector,\n topK: request.topK,\n filter: filterToPineconeFilter(request.filter),\n includeMetadata: true,\n });\n return parseQueryResults<T, Metadata>(response, request.threshold);\n }\n\n async searchIds(request: VectorSearchRequest): Promise<Array<{ score: number; id: string }>> {\n return (await this.search(request)).map(({ score, id }) => ({ score, id }));\n }\n\n asTool(options: VectorSearchToolOptions): Tool<{ query: string; topK?: number }, unknown> {\n return createVectorSearchTool(this, options);\n }\n}\n","import { createHash } from \"node:crypto\";\nimport type { EmbeddedDocument, VectorMetadata } from \"@anvia/core/embeddings\";\nimport type { VectorSearchResult } from \"@anvia/core/vector-store\";\nimport {\n documentIdMetadataKey,\n documentMetadataKey,\n type PineconeClientLike,\n type PineconeMetric,\n reservedMetadataPrefix,\n} from \"./types.js\";\n\nexport function pointId(id: string): string {\n return createHash(\"sha256\").update(id).digest(\"hex\").slice(0, 32);\n}\n\nexport function serializeDocument(document: unknown): string {\n return typeof document === \"string\" ? document : JSON.stringify(document);\n}\n\nexport function parseDocument<T>(document: unknown): T {\n if (document === null || document === undefined) {\n return \"\" as T;\n }\n if (typeof document !== \"string\") {\n return document as T;\n }\n try {\n return JSON.parse(document) as T;\n } catch {\n return document as T;\n }\n}\n\nexport function assertNoReservedMetadata(metadata: VectorMetadata | undefined): void {\n for (const key of Object.keys(metadata ?? {})) {\n if (key.startsWith(reservedMetadataPrefix)) {\n throw new Error(`Metadata key ${key} is reserved for Anvia Pinecone payloads`);\n }\n }\n}\n\nexport function pineconeVectors<T, Metadata extends VectorMetadata>(\n document: EmbeddedDocument<T, Metadata>,\n): Array<Record<string, unknown>> {\n if (document.embeddings.length === 0) {\n throw new Error(`Document ${document.id} has no embeddings`);\n }\n\n assertNoReservedMetadata(document.metadata);\n\n return document.embeddings.map((embedding, index) => {\n const logicalId =\n document.embeddings.length === 1 ? document.id : `${document.id}#embedding:${index}`;\n return {\n id: pointId(logicalId),\n values: embedding.vector,\n metadata: {\n [documentIdMetadataKey]: document.id,\n [documentMetadataKey]: serializeDocument(document.document),\n ...(document.metadata ?? {}),\n },\n };\n });\n}\n\nexport function parseQueryResults<T, Metadata extends VectorMetadata>(\n response: unknown,\n threshold: number | undefined,\n): Array<VectorSearchResult<T, Metadata>> {\n const raw = response as {\n matches?: Array<{\n id: string;\n score?: number;\n metadata?: Record<string, unknown> | null;\n }>;\n };\n const matches = raw.matches ?? [];\n\n const byId = new Map<string, VectorSearchResult<T, Metadata>>();\n\n for (const match of matches) {\n const score = match.score ?? 0;\n if (threshold !== undefined && score < threshold) {\n continue;\n }\n\n const id = String(match.metadata?.[documentIdMetadataKey] ?? match.id);\n const result = {\n id,\n score,\n document: parseDocument(match.metadata?.[documentMetadataKey]),\n ...metadataFromPayload<Metadata>(match.metadata),\n } as VectorSearchResult<T, Metadata>;\n\n const current = byId.get(id);\n if (current === undefined || result.score > current.score) {\n byId.set(id, result);\n }\n }\n\n return [...byId.values()];\n}\n\nexport async function defaultPineconeClient(): Promise<PineconeClientLike> {\n const { Pinecone } = await import(\"@pinecone-database/pinecone\");\n return new Pinecone() as unknown as PineconeClientLike;\n}\n\nexport async function ensureIndex(\n client: PineconeClientLike,\n indexName: string,\n metric: PineconeMetric,\n): Promise<void> {\n try {\n await client.listIndexes();\n } catch {\n return;\n }\n\n try {\n await client.createIndex({\n name: indexName,\n dimension: undefined,\n metric,\n spec: { serverless: { cloud: \"aws\", region: \"us-east-1\" } },\n waitUntilReady: true,\n });\n } catch {\n // Index already exists\n }\n}\n\nfunction metadataFromPayload<Metadata extends VectorMetadata>(\n payload: Record<string, unknown> | null | undefined,\n): { metadata?: Metadata | undefined } {\n const metadata = Object.fromEntries(\n Object.entries(payload ?? {}).filter(([key]) => !key.startsWith(reservedMetadataPrefix)),\n ) as Metadata;\n return Object.keys(metadata).length === 0 ? {} : { metadata };\n}\n","export const documentIdMetadataKey = \"__anvia_document_id\";\nexport const documentMetadataKey = \"__anvia_document\";\nexport const reservedMetadataPrefix = \"__anvia_\";\n\nexport type PineconeMetric = \"cosine\" | \"euclidean\" | \"dotproduct\";\n\nexport type PineconeClientLike = {\n listIndexes(): Promise<unknown>;\n createIndex(options: Record<string, unknown>): Promise<unknown>;\n index(indexName: string): PineconeIndexLike;\n};\n\nexport type PineconeIndexLike = {\n namespace(namespace: string): PineconeNamespaceLike;\n};\n\nexport type PineconeNamespaceLike = {\n upsert(vectors: Array<Record<string, unknown>>): Promise<unknown>;\n query(options: Record<string, unknown>): Promise<unknown>;\n};\n\nexport type PineconeVectorStoreConnectOptions = {\n client?: PineconeClientLike | undefined;\n indexName: string;\n namespace?: string | undefined;\n createIfMissing?: boolean | undefined;\n metric?: PineconeMetric | undefined;\n};\n","import type { EmbeddedDocument, EmbeddingModel, VectorMetadata } from \"@anvia/core/embeddings\";\nimport { defaultPineconeClient, ensureIndex, pineconeVectors } from \"./helpers.js\";\nimport { PineconeVectorIndex } from \"./search-index.js\";\nimport type { PineconeNamespaceLike, PineconeVectorStoreConnectOptions } from \"./types.js\";\n\nexport class PineconeVectorStore<T, Metadata extends VectorMetadata = VectorMetadata> {\n private constructor(private readonly namespace: PineconeNamespaceLike) {}\n\n static async connect<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: PineconeVectorStoreConnectOptions,\n ): Promise<PineconeVectorStore<T, Metadata>> {\n const client = options.client ?? (await defaultPineconeClient());\n\n if (options.createIfMissing !== false) {\n await ensureIndex(client, options.indexName, options.metric ?? \"cosine\");\n }\n\n const namespace = client.index(options.indexName).namespace(options.namespace ?? \"\");\n return new PineconeVectorStore<T, Metadata>(namespace);\n }\n\n async upsertDocuments(documents: Array<EmbeddedDocument<T, Metadata>>): Promise<void> {\n const vectors = documents.flatMap((document) => pineconeVectors(document));\n await this.namespace.upsert(vectors);\n }\n\n index(model: EmbeddingModel): PineconeVectorIndex<T, Metadata> {\n return new PineconeVectorIndex(model, this.namespace);\n }\n}\n"],"mappings":"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","names":[]}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@anvia/pinecone",
3
+ "version": "0.3.0",
4
+ "description": "Pinecone vector store adapter for Anvia.",
5
+ "author": "anvia",
6
+ "maintainer": "Indra Zulfi",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/anvia-hq/anvia",
11
+ "directory": "packages/vector-stores/pinecone"
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "type": "module",
20
+ "main": "./dist/index.js",
21
+ "types": "./dist/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "types": "./dist/index.d.ts",
25
+ "import": "./dist/index.js"
26
+ }
27
+ },
28
+ "dependencies": {
29
+ "@pinecone-database/pinecone": "^5.1.0",
30
+ "@anvia/core": "0.6.1"
31
+ },
32
+ "devDependencies": {
33
+ "@types/node": "^24.9.1",
34
+ "tsup": "^8.5.0",
35
+ "typescript": "^5.9.3",
36
+ "vitest": "^4.0.8"
37
+ },
38
+ "scripts": {
39
+ "build": "tsup src/index.ts --format esm --dts --sourcemap --clean",
40
+ "test": "vitest run",
41
+ "typecheck": "tsc --noEmit"
42
+ }
43
+ }