@mcampa/ai-context-core 0.0.2 → 0.1.0-beta.ff0e631
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -47
- package/dist/.tsbuildinfo +1 -1
- package/dist/context.d.ts +30 -5
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +160 -16
- package/dist/context.js.map +1 -1
- package/dist/embedding/base-embedding.d.ts.map +1 -1
- package/dist/embedding/base-embedding.js +4 -0
- package/dist/embedding/base-embedding.js.map +1 -1
- package/dist/embedding/gemini-embedding.d.ts +43 -1
- package/dist/embedding/gemini-embedding.d.ts.map +1 -1
- package/dist/embedding/gemini-embedding.js +164 -26
- package/dist/embedding/gemini-embedding.js.map +1 -1
- package/dist/embedding/huggingface-embedding.d.ts +70 -0
- package/dist/embedding/huggingface-embedding.d.ts.map +1 -0
- package/dist/embedding/huggingface-embedding.js +270 -0
- package/dist/embedding/huggingface-embedding.js.map +1 -0
- package/dist/embedding/index.d.ts +3 -2
- package/dist/embedding/index.d.ts.map +1 -1
- package/dist/embedding/index.js +3 -2
- package/dist/embedding/index.js.map +1 -1
- package/dist/embedding/ollama-embedding.d.ts +2 -1
- package/dist/embedding/ollama-embedding.d.ts.map +1 -1
- package/dist/embedding/ollama-embedding.js +2 -3
- package/dist/embedding/ollama-embedding.js.map +1 -1
- package/dist/embedding/openai-embedding.d.ts +2 -1
- package/dist/embedding/openai-embedding.d.ts.map +1 -1
- package/dist/embedding/openai-embedding.js +3 -3
- package/dist/embedding/openai-embedding.js.map +1 -1
- package/dist/embedding/voyageai-embedding.d.ts +2 -1
- package/dist/embedding/voyageai-embedding.d.ts.map +1 -1
- package/dist/embedding/voyageai-embedding.js +2 -2
- package/dist/embedding/voyageai-embedding.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/splitter/ast-splitter.d.ts +1 -1
- package/dist/splitter/ast-splitter.d.ts.map +1 -1
- package/dist/splitter/ast-splitter.js +7 -7
- package/dist/splitter/ast-splitter.js.map +1 -1
- package/dist/splitter/index.d.ts +4 -4
- package/dist/splitter/index.d.ts.map +1 -1
- package/dist/splitter/index.js +1 -1
- package/dist/splitter/index.js.map +1 -1
- package/dist/splitter/langchain-splitter.d.ts +1 -1
- package/dist/splitter/langchain-splitter.d.ts.map +1 -1
- package/dist/splitter/langchain-splitter.js +2 -2
- package/dist/splitter/langchain-splitter.js.map +1 -1
- package/dist/sync/merkle.js +1 -1
- package/dist/sync/merkle.js.map +1 -1
- package/dist/sync/synchronizer.js +6 -6
- package/dist/sync/synchronizer.js.map +1 -1
- package/dist/utils/env-manager.js +4 -4
- package/dist/utils/env-manager.js.map +1 -1
- package/dist/vectordb/base/base-vector-database.d.ts +58 -0
- package/dist/vectordb/base/base-vector-database.d.ts.map +1 -0
- package/dist/vectordb/base/base-vector-database.js +32 -0
- package/dist/vectordb/base/base-vector-database.js.map +1 -0
- package/dist/vectordb/factory.d.ts +113 -0
- package/dist/vectordb/factory.d.ts.map +1 -0
- package/dist/vectordb/factory.js +170 -0
- package/dist/vectordb/factory.js.map +1 -0
- package/dist/vectordb/faiss-vectordb.d.ts +162 -0
- package/dist/vectordb/faiss-vectordb.d.ts.map +1 -0
- package/dist/vectordb/faiss-vectordb.js +777 -0
- package/dist/vectordb/faiss-vectordb.js.map +1 -0
- package/dist/vectordb/index.d.ts +13 -4
- package/dist/vectordb/index.d.ts.map +1 -1
- package/dist/vectordb/index.js +39 -5
- package/dist/vectordb/index.js.map +1 -1
- package/dist/vectordb/libsql-vectordb.d.ts +170 -0
- package/dist/vectordb/libsql-vectordb.d.ts.map +1 -0
- package/dist/vectordb/libsql-vectordb.js +837 -0
- package/dist/vectordb/libsql-vectordb.js.map +1 -0
- package/dist/vectordb/milvus-restful-vectordb.d.ts +12 -11
- package/dist/vectordb/milvus-restful-vectordb.d.ts.map +1 -1
- package/dist/vectordb/milvus-restful-vectordb.js +29 -31
- package/dist/vectordb/milvus-restful-vectordb.js.map +1 -1
- package/dist/vectordb/milvus-vectordb.d.ts +12 -12
- package/dist/vectordb/milvus-vectordb.d.ts.map +1 -1
- package/dist/vectordb/milvus-vectordb.js +31 -28
- package/dist/vectordb/milvus-vectordb.js.map +1 -1
- package/dist/vectordb/qdrant-vectordb.d.ts +149 -0
- package/dist/vectordb/qdrant-vectordb.d.ts.map +1 -0
- package/dist/vectordb/qdrant-vectordb.js +856 -0
- package/dist/vectordb/qdrant-vectordb.js.map +1 -0
- package/dist/vectordb/sparse/index.d.ts +4 -0
- package/dist/vectordb/sparse/index.d.ts.map +1 -0
- package/dist/vectordb/sparse/index.js +23 -0
- package/dist/vectordb/sparse/index.js.map +1 -0
- package/dist/vectordb/sparse/simple-bm25.d.ts +115 -0
- package/dist/vectordb/sparse/simple-bm25.d.ts.map +1 -0
- package/dist/vectordb/sparse/simple-bm25.js +249 -0
- package/dist/vectordb/sparse/simple-bm25.js.map +1 -0
- package/dist/vectordb/sparse/sparse-vector-generator.d.ts +54 -0
- package/dist/vectordb/sparse/sparse-vector-generator.d.ts.map +1 -0
- package/dist/vectordb/sparse/sparse-vector-generator.js +3 -0
- package/dist/vectordb/sparse/sparse-vector-generator.js.map +1 -0
- package/dist/vectordb/sparse/types.d.ts +38 -0
- package/dist/vectordb/sparse/types.d.ts.map +1 -0
- package/dist/vectordb/sparse/types.js +3 -0
- package/dist/vectordb/sparse/types.js.map +1 -0
- package/dist/vectordb/types.d.ts +16 -16
- package/dist/vectordb/types.d.ts.map +1 -1
- package/dist/vectordb/types.js.map +1 -1
- package/dist/vectordb/zilliz-utils.js +3 -3
- package/dist/vectordb/zilliz-utils.js.map +1 -1
- package/package.json +32 -22
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { HybridSearchOptions, HybridSearchRequest, HybridSearchResult, SearchOptions, VectorDatabase, VectorDocument, VectorSearchResult } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Base configuration interface for all vector databases
|
|
4
|
+
*/
|
|
5
|
+
export interface BaseDatabaseConfig {
|
|
6
|
+
address?: string;
|
|
7
|
+
token?: string;
|
|
8
|
+
username?: string;
|
|
9
|
+
password?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Abstract base class for vector database implementations
|
|
13
|
+
*
|
|
14
|
+
* Provides common functionality:
|
|
15
|
+
* - Asynchronous initialization pattern
|
|
16
|
+
* - Configuration management
|
|
17
|
+
* - Address resolution
|
|
18
|
+
*
|
|
19
|
+
* Subclasses must implement:
|
|
20
|
+
* - initialize(): Database-specific initialization logic
|
|
21
|
+
* - All VectorDatabase interface methods
|
|
22
|
+
*
|
|
23
|
+
* @template TConfig - The configuration type for the database
|
|
24
|
+
*/
|
|
25
|
+
export declare abstract class BaseVectorDatabase<TConfig extends BaseDatabaseConfig = BaseDatabaseConfig> implements VectorDatabase {
|
|
26
|
+
protected config: TConfig;
|
|
27
|
+
protected initializationPromise: Promise<void>;
|
|
28
|
+
constructor(config: TConfig);
|
|
29
|
+
/**
|
|
30
|
+
* Initialize the database connection
|
|
31
|
+
* Called automatically in constructor
|
|
32
|
+
* Subclasses should implement database-specific initialization
|
|
33
|
+
*/
|
|
34
|
+
protected abstract initialize(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Ensure initialization is complete before method execution
|
|
37
|
+
* Should be called at the start of every public method
|
|
38
|
+
*/
|
|
39
|
+
protected ensureInitialized(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Ensure collection is loaded before search/query operations
|
|
42
|
+
* Subclasses should implement database-specific loading logic
|
|
43
|
+
*/
|
|
44
|
+
protected abstract ensureLoaded(collectionName: string): Promise<void>;
|
|
45
|
+
abstract createCollection(collectionName: string, dimension: number, description?: string): Promise<void>;
|
|
46
|
+
abstract createHybridCollection(collectionName: string, dimension: number, description?: string): Promise<void>;
|
|
47
|
+
abstract dropCollection(collectionName: string): Promise<void>;
|
|
48
|
+
abstract hasCollection(collectionName: string): Promise<boolean>;
|
|
49
|
+
abstract listCollections(): Promise<string[]>;
|
|
50
|
+
abstract insert(collectionName: string, documents: VectorDocument[]): Promise<void>;
|
|
51
|
+
abstract insertHybrid(collectionName: string, documents: VectorDocument[]): Promise<void>;
|
|
52
|
+
abstract search(collectionName: string, queryVector: number[], options?: SearchOptions): Promise<VectorSearchResult[]>;
|
|
53
|
+
abstract hybridSearch(collectionName: string, searchRequests: HybridSearchRequest[], options?: HybridSearchOptions): Promise<HybridSearchResult[]>;
|
|
54
|
+
abstract delete(collectionName: string, ids: string[]): Promise<void>;
|
|
55
|
+
abstract query(collectionName: string, filter: string, outputFields: string[], limit?: number): Promise<Record<string, any>[]>;
|
|
56
|
+
abstract checkCollectionLimit(): Promise<boolean>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=base-vector-database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-vector-database.d.ts","sourceRoot":"","sources":["../../../src/vectordb/base/base-vector-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,8BAAsB,kBAAkB,CACtC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CACvD,YAAW,cAAc;IACzB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEnC,MAAM,EAAE,OAAO;IAK3B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9C;;;OAGG;cACa,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGtE,QAAQ,CAAC,gBAAgB,CACvB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAEhB,QAAQ,CAAC,sBAAsB,CAC7B,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAEhB,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9D,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhE,QAAQ,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAE7C,QAAQ,CAAC,MAAM,CACb,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,cAAc,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC;IAEhB,QAAQ,CAAC,YAAY,CACnB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,cAAc,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC;IAEhB,QAAQ,CAAC,MAAM,CACb,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAEhC,QAAQ,CAAC,YAAY,CACnB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,mBAAmB,EAAE,EACrC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAEhC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAErE,QAAQ,CAAC,KAAK,CACZ,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAEjC,QAAQ,CAAC,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;CAClD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseVectorDatabase = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base class for vector database implementations
|
|
6
|
+
*
|
|
7
|
+
* Provides common functionality:
|
|
8
|
+
* - Asynchronous initialization pattern
|
|
9
|
+
* - Configuration management
|
|
10
|
+
* - Address resolution
|
|
11
|
+
*
|
|
12
|
+
* Subclasses must implement:
|
|
13
|
+
* - initialize(): Database-specific initialization logic
|
|
14
|
+
* - All VectorDatabase interface methods
|
|
15
|
+
*
|
|
16
|
+
* @template TConfig - The configuration type for the database
|
|
17
|
+
*/
|
|
18
|
+
class BaseVectorDatabase {
|
|
19
|
+
constructor(config) {
|
|
20
|
+
this.config = config;
|
|
21
|
+
this.initializationPromise = this.initialize();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Ensure initialization is complete before method execution
|
|
25
|
+
* Should be called at the start of every public method
|
|
26
|
+
*/
|
|
27
|
+
async ensureInitialized() {
|
|
28
|
+
await this.initializationPromise;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.BaseVectorDatabase = BaseVectorDatabase;
|
|
32
|
+
//# sourceMappingURL=base-vector-database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-vector-database.js","sourceRoot":"","sources":["../../../src/vectordb/base/base-vector-database.ts"],"names":[],"mappings":";;;AAoBA;;;;;;;;;;;;;GAaG;AACH,MAAsB,kBAAkB;IAMtC,YAAY,MAAe;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACjD,CAAC;IASD;;;OAGG;IACO,KAAK,CAAC,iBAAiB;QAC/B,MAAM,IAAI,CAAC,qBAAqB,CAAC;IACnC,CAAC;CA2DF;AAnFD,gDAmFC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { FaissConfig } from "./faiss-vectordb";
|
|
2
|
+
import type { LibSQLConfig } from "./libsql-vectordb";
|
|
3
|
+
import type { MilvusRestfulConfig } from "./milvus-restful-vectordb";
|
|
4
|
+
import type { MilvusConfig } from "./milvus-vectordb";
|
|
5
|
+
import type { QdrantConfig } from "./qdrant-vectordb";
|
|
6
|
+
import type { VectorDatabase } from "./types";
|
|
7
|
+
/**
|
|
8
|
+
* Supported vector database types
|
|
9
|
+
*/
|
|
10
|
+
export declare enum VectorDatabaseType {
|
|
11
|
+
/**
|
|
12
|
+
* Milvus with gRPC protocol
|
|
13
|
+
* Use for Node.js environments with full gRPC support
|
|
14
|
+
*/
|
|
15
|
+
MILVUS_GRPC = "milvus-grpc",
|
|
16
|
+
/**
|
|
17
|
+
* Milvus with RESTful API
|
|
18
|
+
* Use for browser/VSCode extension environments where gRPC is not available
|
|
19
|
+
*/
|
|
20
|
+
MILVUS_RESTFUL = "milvus-restful",
|
|
21
|
+
/**
|
|
22
|
+
* Qdrant with gRPC protocol
|
|
23
|
+
* Use for Node.js environments with native hybrid search support
|
|
24
|
+
* Supports both self-hosted and Qdrant Cloud
|
|
25
|
+
*/
|
|
26
|
+
QDRANT_GRPC = "qdrant-grpc",
|
|
27
|
+
/**
|
|
28
|
+
* FAISS local file-based vector database
|
|
29
|
+
* Use for local-only deployments with zero configuration
|
|
30
|
+
* Ideal for development and small-to-medium codebases
|
|
31
|
+
*/
|
|
32
|
+
FAISS_LOCAL = "faiss-local",
|
|
33
|
+
/**
|
|
34
|
+
* LibSQL local file-based vector database
|
|
35
|
+
* Use for local-only deployments without native bindings
|
|
36
|
+
* Advantages over FAISS: supports deletion, filtering, pure JS
|
|
37
|
+
*/
|
|
38
|
+
LIBSQL_LOCAL = "libsql"
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Configuration type for each database type
|
|
42
|
+
*/
|
|
43
|
+
export interface VectorDatabaseConfig {
|
|
44
|
+
[VectorDatabaseType.MILVUS_GRPC]: MilvusConfig;
|
|
45
|
+
[VectorDatabaseType.MILVUS_RESTFUL]: MilvusRestfulConfig;
|
|
46
|
+
[VectorDatabaseType.QDRANT_GRPC]: QdrantConfig;
|
|
47
|
+
[VectorDatabaseType.FAISS_LOCAL]: FaissConfig;
|
|
48
|
+
[VectorDatabaseType.LIBSQL_LOCAL]: LibSQLConfig;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Factory class for creating vector database instances
|
|
52
|
+
*
|
|
53
|
+
* Usage:
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const db = VectorDatabaseFactory.create(
|
|
56
|
+
* VectorDatabaseType.MILVUS_GRPC,
|
|
57
|
+
* { address: 'localhost:19530', token: 'xxx' }
|
|
58
|
+
* );
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare class VectorDatabaseFactory {
|
|
62
|
+
/**
|
|
63
|
+
* Create a vector database instance
|
|
64
|
+
*
|
|
65
|
+
* @param type - The type of vector database to create
|
|
66
|
+
* @param config - Configuration for the database
|
|
67
|
+
* @returns A VectorDatabase instance
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* // Create Milvus gRPC database
|
|
72
|
+
* const db = VectorDatabaseFactory.create(
|
|
73
|
+
* VectorDatabaseType.MILVUS_GRPC,
|
|
74
|
+
* { address: 'localhost:19530' }
|
|
75
|
+
* );
|
|
76
|
+
*
|
|
77
|
+
* // Create Milvus RESTful database
|
|
78
|
+
* const restDb = VectorDatabaseFactory.create(
|
|
79
|
+
* VectorDatabaseType.MILVUS_RESTFUL,
|
|
80
|
+
* { address: 'https://your-cluster.com', token: 'xxx' }
|
|
81
|
+
* );
|
|
82
|
+
*
|
|
83
|
+
* // Create Qdrant gRPC database
|
|
84
|
+
* const qdrantDb = VectorDatabaseFactory.create(
|
|
85
|
+
* VectorDatabaseType.QDRANT_GRPC,
|
|
86
|
+
* { address: 'localhost:6334', apiKey: 'xxx' }
|
|
87
|
+
* );
|
|
88
|
+
*
|
|
89
|
+
* // Create FAISS local database
|
|
90
|
+
* const faissDb = VectorDatabaseFactory.create(
|
|
91
|
+
* VectorDatabaseType.FAISS_LOCAL,
|
|
92
|
+
* { storageDir: '~/.context/faiss-indexes' }
|
|
93
|
+
* );
|
|
94
|
+
*
|
|
95
|
+
* // Create LibSQL local database
|
|
96
|
+
* const libsqlDB = VectorDatabaseFactory.create(
|
|
97
|
+
* VectorDatabaseType.LIBSQL_LOCAL,
|
|
98
|
+
* { storageDir: '~/.context/libsql-indexes' }
|
|
99
|
+
* );
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
static create<T extends VectorDatabaseType>(type: T, config: VectorDatabaseConfig[T]): VectorDatabase;
|
|
103
|
+
/**
|
|
104
|
+
* Get all supported database types
|
|
105
|
+
* Note: FAISS may not be available if native bindings are missing
|
|
106
|
+
*/
|
|
107
|
+
static getSupportedTypes(): VectorDatabaseType[];
|
|
108
|
+
/**
|
|
109
|
+
* Check if FAISS is available in the current environment
|
|
110
|
+
*/
|
|
111
|
+
static isFaissAvailable(): boolean;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/vectordb/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAqD9C;;GAEG;AACH,oBAAY,kBAAkB;IAC5B;;;OAGG;IACH,WAAW,gBAAgB;IAE3B;;;OAGG;IACH,cAAc,mBAAmB;IAEjC;;;;OAIG;IACH,WAAW,gBAAgB;IAE3B;;;;OAIG;IACH,WAAW,gBAAgB;IAE3B;;;;OAIG;IACH,YAAY,WAAW;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IAC/C,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACzD,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IAC/C,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC9C,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACjD;AAED;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,kBAAkB,EACxC,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC9B,cAAc;IA6BjB;;;OAGG;IACH,MAAM,CAAC,iBAAiB,IAAI,kBAAkB,EAAE;IAQhD;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,OAAO;CAGnC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VectorDatabaseFactory = exports.VectorDatabaseType = void 0;
|
|
4
|
+
const libsql_vectordb_1 = require("./libsql-vectordb");
|
|
5
|
+
const milvus_restful_vectordb_1 = require("./milvus-restful-vectordb");
|
|
6
|
+
const milvus_vectordb_1 = require("./milvus-vectordb");
|
|
7
|
+
const qdrant_vectordb_1 = require("./qdrant-vectordb");
|
|
8
|
+
// FAISS is optional - may not be available in all environments (e.g., CI without native bindings)
|
|
9
|
+
// Use lazy loading to avoid import errors
|
|
10
|
+
let FaissVectorDatabase;
|
|
11
|
+
let faissAvailable = null; // null = not checked yet
|
|
12
|
+
let faissCheckError = null;
|
|
13
|
+
function checkFaissAvailability() {
|
|
14
|
+
if (faissAvailable !== null) {
|
|
15
|
+
return faissAvailable;
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
FaissVectorDatabase = require("./faiss-vectordb").FaissVectorDatabase;
|
|
19
|
+
faissAvailable = true;
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
const errorMsg = error.message || String(error);
|
|
24
|
+
const errorCode = error.code;
|
|
25
|
+
// Treat as "FAISS unavailable" for:
|
|
26
|
+
// 1. Native binding errors (faiss-node not compiled)
|
|
27
|
+
// 2. Module not found errors (module path resolution in test environments)
|
|
28
|
+
const isExpectedUnavailableError = errorMsg.includes("Could not locate the bindings file") ||
|
|
29
|
+
errorMsg.includes("faiss-node") ||
|
|
30
|
+
errorCode === "MODULE_NOT_FOUND";
|
|
31
|
+
if (isExpectedUnavailableError) {
|
|
32
|
+
faissAvailable = false;
|
|
33
|
+
faissCheckError = errorMsg.includes("faiss-node")
|
|
34
|
+
? "FAISS native bindings not available"
|
|
35
|
+
: "FAISS module not found";
|
|
36
|
+
console.warn(`[VectorDatabaseFactory] ${faissCheckError}. FAISS support disabled.`);
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
// For syntax errors, type errors, or other real bugs - re-throw
|
|
40
|
+
console.error("[VectorDatabaseFactory] Unexpected error loading FAISS module:", errorMsg);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Supported vector database types
|
|
46
|
+
*/
|
|
47
|
+
var VectorDatabaseType;
|
|
48
|
+
(function (VectorDatabaseType) {
|
|
49
|
+
/**
|
|
50
|
+
* Milvus with gRPC protocol
|
|
51
|
+
* Use for Node.js environments with full gRPC support
|
|
52
|
+
*/
|
|
53
|
+
VectorDatabaseType["MILVUS_GRPC"] = "milvus-grpc";
|
|
54
|
+
/**
|
|
55
|
+
* Milvus with RESTful API
|
|
56
|
+
* Use for browser/VSCode extension environments where gRPC is not available
|
|
57
|
+
*/
|
|
58
|
+
VectorDatabaseType["MILVUS_RESTFUL"] = "milvus-restful";
|
|
59
|
+
/**
|
|
60
|
+
* Qdrant with gRPC protocol
|
|
61
|
+
* Use for Node.js environments with native hybrid search support
|
|
62
|
+
* Supports both self-hosted and Qdrant Cloud
|
|
63
|
+
*/
|
|
64
|
+
VectorDatabaseType["QDRANT_GRPC"] = "qdrant-grpc";
|
|
65
|
+
/**
|
|
66
|
+
* FAISS local file-based vector database
|
|
67
|
+
* Use for local-only deployments with zero configuration
|
|
68
|
+
* Ideal for development and small-to-medium codebases
|
|
69
|
+
*/
|
|
70
|
+
VectorDatabaseType["FAISS_LOCAL"] = "faiss-local";
|
|
71
|
+
/**
|
|
72
|
+
* LibSQL local file-based vector database
|
|
73
|
+
* Use for local-only deployments without native bindings
|
|
74
|
+
* Advantages over FAISS: supports deletion, filtering, pure JS
|
|
75
|
+
*/
|
|
76
|
+
VectorDatabaseType["LIBSQL_LOCAL"] = "libsql";
|
|
77
|
+
})(VectorDatabaseType || (exports.VectorDatabaseType = VectorDatabaseType = {}));
|
|
78
|
+
/**
|
|
79
|
+
* Factory class for creating vector database instances
|
|
80
|
+
*
|
|
81
|
+
* Usage:
|
|
82
|
+
* ```typescript
|
|
83
|
+
* const db = VectorDatabaseFactory.create(
|
|
84
|
+
* VectorDatabaseType.MILVUS_GRPC,
|
|
85
|
+
* { address: 'localhost:19530', token: 'xxx' }
|
|
86
|
+
* );
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
class VectorDatabaseFactory {
|
|
90
|
+
/**
|
|
91
|
+
* Create a vector database instance
|
|
92
|
+
*
|
|
93
|
+
* @param type - The type of vector database to create
|
|
94
|
+
* @param config - Configuration for the database
|
|
95
|
+
* @returns A VectorDatabase instance
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* // Create Milvus gRPC database
|
|
100
|
+
* const db = VectorDatabaseFactory.create(
|
|
101
|
+
* VectorDatabaseType.MILVUS_GRPC,
|
|
102
|
+
* { address: 'localhost:19530' }
|
|
103
|
+
* );
|
|
104
|
+
*
|
|
105
|
+
* // Create Milvus RESTful database
|
|
106
|
+
* const restDb = VectorDatabaseFactory.create(
|
|
107
|
+
* VectorDatabaseType.MILVUS_RESTFUL,
|
|
108
|
+
* { address: 'https://your-cluster.com', token: 'xxx' }
|
|
109
|
+
* );
|
|
110
|
+
*
|
|
111
|
+
* // Create Qdrant gRPC database
|
|
112
|
+
* const qdrantDb = VectorDatabaseFactory.create(
|
|
113
|
+
* VectorDatabaseType.QDRANT_GRPC,
|
|
114
|
+
* { address: 'localhost:6334', apiKey: 'xxx' }
|
|
115
|
+
* );
|
|
116
|
+
*
|
|
117
|
+
* // Create FAISS local database
|
|
118
|
+
* const faissDb = VectorDatabaseFactory.create(
|
|
119
|
+
* VectorDatabaseType.FAISS_LOCAL,
|
|
120
|
+
* { storageDir: '~/.context/faiss-indexes' }
|
|
121
|
+
* );
|
|
122
|
+
*
|
|
123
|
+
* // Create LibSQL local database
|
|
124
|
+
* const libsqlDB = VectorDatabaseFactory.create(
|
|
125
|
+
* VectorDatabaseType.LIBSQL_LOCAL,
|
|
126
|
+
* { storageDir: '~/.context/libsql-indexes' }
|
|
127
|
+
* );
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
static create(type, config) {
|
|
131
|
+
switch (type) {
|
|
132
|
+
case VectorDatabaseType.MILVUS_GRPC:
|
|
133
|
+
return new milvus_vectordb_1.MilvusVectorDatabase(config);
|
|
134
|
+
case VectorDatabaseType.MILVUS_RESTFUL:
|
|
135
|
+
return new milvus_restful_vectordb_1.MilvusRestfulVectorDatabase(config);
|
|
136
|
+
case VectorDatabaseType.QDRANT_GRPC:
|
|
137
|
+
return new qdrant_vectordb_1.QdrantVectorDatabase(config);
|
|
138
|
+
case VectorDatabaseType.FAISS_LOCAL:
|
|
139
|
+
if (!checkFaissAvailability()) {
|
|
140
|
+
throw new Error(`FAISS vector database is not available. ${faissCheckError || "Native bindings could not be loaded"}. ` +
|
|
141
|
+
"This usually happens in environments without C++ build tools. " +
|
|
142
|
+
"Please use another vector database type (MILVUS_GRPC, MILVUS_RESTFUL, QDRANT_GRPC, or LIBSQL_LOCAL).");
|
|
143
|
+
}
|
|
144
|
+
return new FaissVectorDatabase(config);
|
|
145
|
+
case VectorDatabaseType.LIBSQL_LOCAL:
|
|
146
|
+
return new libsql_vectordb_1.LibSQLVectorDatabase(config);
|
|
147
|
+
default:
|
|
148
|
+
throw new Error(`Unsupported database type: ${type}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get all supported database types
|
|
153
|
+
* Note: FAISS may not be available if native bindings are missing
|
|
154
|
+
*/
|
|
155
|
+
static getSupportedTypes() {
|
|
156
|
+
const types = Object.values(VectorDatabaseType);
|
|
157
|
+
if (!checkFaissAvailability()) {
|
|
158
|
+
return types.filter((t) => t !== VectorDatabaseType.FAISS_LOCAL);
|
|
159
|
+
}
|
|
160
|
+
return types;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Check if FAISS is available in the current environment
|
|
164
|
+
*/
|
|
165
|
+
static isFaissAvailable() {
|
|
166
|
+
return checkFaissAvailability();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
exports.VectorDatabaseFactory = VectorDatabaseFactory;
|
|
170
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/vectordb/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { BaseDatabaseConfig, BaseVectorDatabase } from "./base/base-vector-database";
|
|
2
|
+
import { BM25Config } from "./sparse/simple-bm25";
|
|
3
|
+
import { HybridSearchOptions, HybridSearchRequest, HybridSearchResult, SearchOptions, VectorDocument, VectorSearchResult } from "./types";
|
|
4
|
+
export interface FaissConfig extends BaseDatabaseConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Storage directory for FAISS indexes
|
|
7
|
+
* @default ~/.context/faiss-indexes
|
|
8
|
+
*/
|
|
9
|
+
storageDir?: string;
|
|
10
|
+
/**
|
|
11
|
+
* BM25 configuration for sparse vector generation
|
|
12
|
+
*/
|
|
13
|
+
bm25Config?: BM25Config;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* FAISS Vector Database implementation for local-only deployments
|
|
17
|
+
*
|
|
18
|
+
* Features:
|
|
19
|
+
* - Zero-configuration file-based storage
|
|
20
|
+
* - Hybrid search with BM25 sparse vectors
|
|
21
|
+
* - RRF (Reciprocal Rank Fusion) reranking
|
|
22
|
+
* - Perfect for local development and small-to-medium codebases
|
|
23
|
+
*
|
|
24
|
+
* Architecture:
|
|
25
|
+
* - Dense vectors: Stored in FAISS IndexFlatL2 (L2 distance)
|
|
26
|
+
* - Sparse vectors: Generated using SimpleBM25 for keyword matching
|
|
27
|
+
* - Hybrid search: Combines both using RRF fusion
|
|
28
|
+
*
|
|
29
|
+
* Storage structure:
|
|
30
|
+
* ~/.context/faiss-indexes/
|
|
31
|
+
* └── {collection_name}/
|
|
32
|
+
* ├── dense.index # FAISS index file
|
|
33
|
+
* ├── sparse.json # BM25 model (vocabulary, IDF)
|
|
34
|
+
* └── metadata.json # Document metadata
|
|
35
|
+
*
|
|
36
|
+
* Limitations:
|
|
37
|
+
* - Document deletion is NOT supported (FAISS IndexFlatL2 limitation)
|
|
38
|
+
* - Query filters are NOT supported (returns all documents)
|
|
39
|
+
* - To remove documents, you must drop and recreate the collection
|
|
40
|
+
*/
|
|
41
|
+
export declare class FaissVectorDatabase extends BaseVectorDatabase<FaissConfig> {
|
|
42
|
+
private collections;
|
|
43
|
+
constructor(config: FaissConfig);
|
|
44
|
+
/**
|
|
45
|
+
* Get storage directory (lazily computed from config)
|
|
46
|
+
*/
|
|
47
|
+
private get storageDir();
|
|
48
|
+
/**
|
|
49
|
+
* Initialize FAISS storage directory
|
|
50
|
+
*/
|
|
51
|
+
protected initialize(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* FAISS indexes are loaded on-demand when accessed
|
|
54
|
+
*/
|
|
55
|
+
protected ensureLoaded(collectionName: string): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Get collection storage path
|
|
58
|
+
*/
|
|
59
|
+
private getCollectionPath;
|
|
60
|
+
/**
|
|
61
|
+
* Load collection from disk
|
|
62
|
+
*/
|
|
63
|
+
private loadCollection;
|
|
64
|
+
/**
|
|
65
|
+
* Save collection to disk
|
|
66
|
+
*/
|
|
67
|
+
private saveCollection;
|
|
68
|
+
/**
|
|
69
|
+
* Create collection with dense vectors only
|
|
70
|
+
*/
|
|
71
|
+
createCollection(collectionName: string, dimension: number, _description?: string): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Create collection with hybrid search support (dense + sparse vectors)
|
|
74
|
+
*/
|
|
75
|
+
createHybridCollection(collectionName: string, dimension: number, _description?: string): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Drop collection
|
|
78
|
+
*/
|
|
79
|
+
dropCollection(collectionName: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Check if collection exists
|
|
82
|
+
*/
|
|
83
|
+
hasCollection(collectionName: string): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* List all collections
|
|
86
|
+
*/
|
|
87
|
+
listCollections(): Promise<string[]>;
|
|
88
|
+
/**
|
|
89
|
+
* Insert vector documents (dense only)
|
|
90
|
+
*/
|
|
91
|
+
insert(collectionName: string, documents: VectorDocument[]): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Insert hybrid vector documents (dense + sparse)
|
|
94
|
+
*/
|
|
95
|
+
insertHybrid(collectionName: string, documents: VectorDocument[]): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Search similar vectors (dense search only)
|
|
98
|
+
*/
|
|
99
|
+
search(collectionName: string, queryVector: number[], options?: SearchOptions): Promise<VectorSearchResult[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Hybrid search with multiple vector fields (dense + sparse)
|
|
102
|
+
*/
|
|
103
|
+
hybridSearch(collectionName: string, searchRequests: HybridSearchRequest[], options?: HybridSearchOptions): Promise<HybridSearchResult[]>;
|
|
104
|
+
/**
|
|
105
|
+
* Perform dense vector search using FAISS index
|
|
106
|
+
*/
|
|
107
|
+
private performDenseSearch;
|
|
108
|
+
/**
|
|
109
|
+
* Perform sparse search using BM25
|
|
110
|
+
*/
|
|
111
|
+
private performSparseSearch;
|
|
112
|
+
/**
|
|
113
|
+
* Calculate sparse vector dot product score
|
|
114
|
+
*/
|
|
115
|
+
private calculateSparseScore;
|
|
116
|
+
/**
|
|
117
|
+
* Pre-compute ranks from scores (O(n log n) instead of O(n²))
|
|
118
|
+
*/
|
|
119
|
+
private computeRanks;
|
|
120
|
+
/**
|
|
121
|
+
* Apply Reciprocal Rank Fusion (RRF) reranking
|
|
122
|
+
*/
|
|
123
|
+
private applyRRF;
|
|
124
|
+
/**
|
|
125
|
+
* Delete documents by IDs
|
|
126
|
+
*
|
|
127
|
+
* ⚠️ NOT IMPLEMENTED: FAISS does not support document deletion
|
|
128
|
+
*
|
|
129
|
+
* The FAISS IndexFlatL2 library does not provide a way to remove vectors
|
|
130
|
+
* from an existing index. To fully remove documents, you must:
|
|
131
|
+
*
|
|
132
|
+
* 1. Drop the collection using dropCollection()
|
|
133
|
+
* 2. Recreate it using createCollection() or createHybridCollection()
|
|
134
|
+
* 3. Re-insert all documents except the ones you want to delete
|
|
135
|
+
*
|
|
136
|
+
* @throws Error Always throws - deletion is not supported
|
|
137
|
+
* @param collectionName Collection name
|
|
138
|
+
* @param ids Document IDs to delete (not used)
|
|
139
|
+
*/
|
|
140
|
+
delete(collectionName: string, ids: string[]): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Query documents with filter conditions
|
|
143
|
+
*
|
|
144
|
+
* ⚠️ LIMITATION: Filter parameter is currently ignored
|
|
145
|
+
*
|
|
146
|
+
* This method returns ALL documents in the collection (up to limit),
|
|
147
|
+
* not filtered results. Filter parsing is not yet implemented for FAISS.
|
|
148
|
+
*
|
|
149
|
+
* @param collectionName Collection name
|
|
150
|
+
* @param filter Filter expression (currently ignored - returns all documents)
|
|
151
|
+
* @param outputFields Fields to return in results
|
|
152
|
+
* @param limit Maximum number of results (only limit is enforced)
|
|
153
|
+
* @returns All documents with specified fields (up to limit)
|
|
154
|
+
*/
|
|
155
|
+
query(collectionName: string, filter: string, outputFields: string[], limit?: number): Promise<Record<string, any>[]>;
|
|
156
|
+
/**
|
|
157
|
+
* Check collection limit
|
|
158
|
+
* FAISS has no inherent collection limit (only limited by disk space)
|
|
159
|
+
*/
|
|
160
|
+
checkCollectionLimit(): Promise<boolean>;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=faiss-vectordb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faiss-vectordb.d.ts","sourceRoot":"","sources":["../../src/vectordb/faiss-vectordb.ts"],"names":[],"mappings":"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"}
|