@@ -6,9 +6,12 @@ const { v4: uuidv4 } = require("uuid");
66const { toChunks, getEmbeddingEngineSelection } = require ( "../../helpers" ) ;
77const { sourceIdentifier } = require ( "../../chats" ) ;
88
9- const PineconeDB = {
10- name : "Pinecone" ,
11- connect : async function ( ) {
9+ class PineconeDB {
10+ constructor ( ) {
11+ this . name = "Pinecone" ;
12+ }
13+
14+ async connect ( ) {
1215 if ( process . env . VECTOR_DB !== "pinecone" )
1316 throw new Error ( "Pinecone::Invalid ENV settings" ) ;
1417
@@ -21,22 +24,25 @@ const PineconeDB = {
2124
2225 if ( ! status . ready ) throw new Error ( "Pinecone::Index not ready." ) ;
2326 return { client, pineconeIndex, indexName : process . env . PINECONE_INDEX } ;
24- } ,
25- totalVectors : async function ( ) {
27+ }
28+
29+ async totalVectors ( ) {
2630 const { pineconeIndex } = await this . connect ( ) ;
2731 const { namespaces } = await pineconeIndex . describeIndexStats ( ) ;
2832
2933 return Object . values ( namespaces ) . reduce (
3034 ( a , b ) => a + ( b ?. recordCount || 0 ) ,
3135 0
3236 ) ;
33- } ,
34- namespaceCount : async function ( _namespace = null ) {
37+ }
38+
39+ async namespaceCount ( _namespace = null ) {
3540 const { pineconeIndex } = await this . connect ( ) ;
3641 const namespace = await this . namespace ( pineconeIndex , _namespace ) ;
3742 return namespace ?. recordCount || 0 ;
38- } ,
39- similarityResponse : async function ( {
43+ }
44+
45+ async similarityResponse ( {
4046 client,
4147 namespace,
4248 queryVector,
@@ -75,28 +81,33 @@ const PineconeDB = {
7581 } ) ;
7682
7783 return result ;
78- } ,
79- namespace : async function ( index , namespace = null ) {
84+ }
85+
86+ async namespace ( index , namespace = null ) {
8087 if ( ! namespace ) throw new Error ( "No namespace value provided." ) ;
8188 const { namespaces } = await index . describeIndexStats ( ) ;
8289 return namespaces . hasOwnProperty ( namespace ) ? namespaces [ namespace ] : null ;
83- } ,
84- hasNamespace : async function ( namespace = null ) {
90+ }
91+
92+ async hasNamespace ( namespace = null ) {
8593 if ( ! namespace ) return false ;
8694 const { pineconeIndex } = await this . connect ( ) ;
8795 return await this . namespaceExists ( pineconeIndex , namespace ) ;
88- } ,
89- namespaceExists : async function ( index , namespace = null ) {
96+ }
97+
98+ async namespaceExists ( index , namespace = null ) {
9099 if ( ! namespace ) throw new Error ( "No namespace value provided." ) ;
91100 const { namespaces } = await index . describeIndexStats ( ) ;
92101 return namespaces . hasOwnProperty ( namespace ) ;
93- } ,
94- deleteVectorsInNamespace : async function ( index , namespace = null ) {
102+ }
103+
104+ async deleteVectorsInNamespace ( index , namespace = null ) {
95105 const pineconeNamespace = index . namespace ( namespace ) ;
96106 await pineconeNamespace . deleteAll ( ) ;
97107 return true ;
98- } ,
99- addDocumentToNamespace : async function (
108+ }
109+
110+ async addDocumentToNamespace (
100111 namespace ,
101112 documentData = { } ,
102113 fullFilePath = null ,
@@ -197,8 +208,9 @@ const PineconeDB = {
197208 console . error ( "addDocumentToNamespace" , e . message ) ;
198209 return { vectorized : false , error : e . message } ;
199210 }
200- } ,
201- deleteDocumentFromNamespace : async function ( namespace , docId ) {
211+ }
212+
213+ async deleteDocumentFromNamespace ( namespace , docId ) {
202214 const { DocumentVectors } = require ( "../../../models/vectors" ) ;
203215 const { pineconeIndex } = await this . connect ( ) ;
204216 if ( ! ( await this . namespaceExists ( pineconeIndex , namespace ) ) ) return ;
@@ -216,8 +228,9 @@ const PineconeDB = {
216228 const indexes = knownDocuments . map ( ( doc ) => doc . id ) ;
217229 await DocumentVectors . deleteIds ( indexes ) ;
218230 return true ;
219- } ,
220- "namespace-stats" : async function ( reqBody = { } ) {
231+ }
232+
233+ async "namespace-stats" ( reqBody = { } ) {
221234 const { namespace = null } = reqBody ;
222235 if ( ! namespace ) throw new Error ( "namespace required" ) ;
223236 const { pineconeIndex } = await this . connect ( ) ;
@@ -227,8 +240,9 @@ const PineconeDB = {
227240 return stats
228241 ? stats
229242 : { message : "No stats were able to be fetched from DB" } ;
230- } ,
231- "delete-namespace" : async function ( reqBody = { } ) {
243+ }
244+
245+ async "delete-namespace" ( reqBody = { } ) {
232246 const { namespace = null } = reqBody ;
233247 const { pineconeIndex } = await this . connect ( ) ;
234248 if ( ! ( await this . namespaceExists ( pineconeIndex , namespace ) ) )
@@ -239,8 +253,9 @@ const PineconeDB = {
239253 return {
240254 message : `Namespace ${ namespace } was deleted along with ${ details . vectorCount } vectors.` ,
241255 } ;
242- } ,
243- performSimilaritySearch : async function ( {
256+ }
257+
258+ async performSimilaritySearch ( {
244259 namespace = null ,
245260 input = "" ,
246261 LLMConnector = null ,
@@ -275,8 +290,9 @@ const PineconeDB = {
275290 sources : this . curateSources ( sources ) ,
276291 message : false ,
277292 } ;
278- } ,
279- curateSources : function ( sources = [ ] ) {
293+ }
294+
295+ curateSources ( sources = [ ] ) {
280296 const documents = [ ] ;
281297 for ( const source of sources ) {
282298 const { metadata = { } } = source ;
@@ -290,7 +306,7 @@ const PineconeDB = {
290306 }
291307 }
292308 return documents ;
293- } ,
294- } ;
309+ }
310+ }
295311
296312module . exports . Pinecone = PineconeDB ;
0 commit comments