chore: Bump zep cloud sdk version and clean up zep cloud vector store node (#2767)

pull/2540/head^2
Pavlo Paliychuk 2024-07-12 13:01:00 -04:00 committed by GitHub
parent 7166317482
commit 1015e1193f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 34332 additions and 34388 deletions

View File

@ -1,5 +1,5 @@
import { flatten } from 'lodash'
import { IDocument, ZepClient } from '@getzep/zep-cloud'
import { ZepClient } from '@getzep/zep-cloud'
import { IZepConfig, ZepVectorStore } from '@getzep/zep-cloud/langchain'
import { Embeddings } from 'langchain/embeddings/base'
import { Document } from 'langchain/document'
@ -101,7 +101,9 @@ class Zep_CloudVectorStores implements INode {
finalDocs.push(new Document(flattenDocs[i]))
}
}
const client = await ZepClient.init(apiKey)
const client = new ZepClient({
apiKey: apiKey
})
const zepConfig = {
apiKey: apiKey,
collectionName: zepCollection,
@ -129,7 +131,9 @@ class Zep_CloudVectorStores implements INode {
if (zepMetadataFilter) {
zepConfig.filter = typeof zepMetadataFilter === 'object' ? zepMetadataFilter : JSON.parse(zepMetadataFilter)
}
zepConfig.client = await ZepClient.init(zepConfig.apiKey)
zepConfig.client = new ZepClient({
apiKey: apiKey
})
const vectorStore = await ZepExistingVS.init(zepConfig)
return resolveVectorStoreOrRetriever(nodeData, vectorStore, zepConfig.filter)
}
@ -139,26 +143,6 @@ interface ZepFilter {
filter: Record<string, any>
}
function zepDocsToDocumentsAndScore(results: IDocument[]): [Document, number][] {
return results.map((d) => [
new Document({
pageContent: d.content,
metadata: d.metadata
}),
d.score ? d.score : 0
])
}
function assignMetadata(value: string | Record<string, unknown> | object | undefined): Record<string, unknown> | undefined {
if (typeof value === 'object' && value !== null) {
return value as Record<string, unknown>
}
if (value !== undefined) {
console.warn('Metadata filters must be an object, Record, or undefined.')
}
return undefined
}
class ZepExistingVS extends ZepVectorStore {
filter?: Record<string, any>
args?: IZepConfig & Partial<ZepFilter>
@ -169,61 +153,6 @@ class ZepExistingVS extends ZepVectorStore {
this.args = args
}
async initializeCollection(args: IZepConfig & Partial<ZepFilter>) {
this.client = await ZepClient.init(args.apiKey, args.apiUrl)
try {
this.collection = await this.client.document.getCollection(args.collectionName)
} catch (err) {
if (err instanceof Error) {
if (err.name === 'NotFoundError') {
await this.createNewCollection(args)
} else {
throw err
}
}
}
}
async createNewCollection(args: IZepConfig & Partial<ZepFilter>) {
this.collection = await this.client.document.addCollection({
name: args.collectionName,
description: args.description,
metadata: args.metadata
})
}
async similaritySearchVectorWithScore(
query: number[],
k: number,
filter?: Record<string, unknown> | undefined
): Promise<[Document, number][]> {
if (filter && this.filter) {
throw new Error('cannot provide both `filter` and `this.filter`')
}
const _filters = filter ?? this.filter
const ANDFilters = []
for (const filterKey in _filters) {
let filterVal = _filters[filterKey]
if (typeof filterVal === 'string') filterVal = `"${filterVal}"`
ANDFilters.push({ jsonpath: `$[*] ? (@.${filterKey} == ${filterVal})` })
}
const newfilter = {
where: { and: ANDFilters }
}
await this.initializeCollection(this.args!).catch((err) => {
console.error('Error initializing collection:', err)
throw err
})
const results = await this.collection.search(
{
embedding: new Float32Array(query),
metadata: assignMetadata(newfilter)
},
k
)
return zepDocsToDocumentsAndScore(results)
}
static async fromExistingIndex(embeddings: Embeddings, dbConfig: IZepConfig & Partial<ZepFilter>): Promise<ZepVectorStore> {
return new this(embeddings, dbConfig)
}

View File

@ -27,7 +27,7 @@
"@dqbd/tiktoken": "^1.0.7",
"@e2b/code-interpreter": "^0.0.5",
"@elastic/elasticsearch": "^8.9.0",
"@getzep/zep-cloud": "npm:@getzep/zep-js@next",
"@getzep/zep-cloud": "~1.0.7",
"@getzep/zep-js": "^0.9.0",
"@gomomento/sdk": "^1.51.1",
"@gomomento/sdk-core": "^1.51.1",

File diff suppressed because it is too large Load Diff