From 50ee545c9665a685641a6b50bf2f33c27c8cc249 Mon Sep 17 00:00:00 2001
From: Sourabh Desai <sourabhdesai@gmail.com>
Date: Thu, 22 Jun 2023 06:59:54 +0000
Subject: [PATCH] add node/doc deserialization

---
 packages/core/src/Node.ts                   |  4 +++
 packages/core/src/embeddingUtils.ts         | 35 +++++++++++++++++++++
 packages/core/src/storage/docStore/utils.ts |  6 ++--
 3 files changed, 42 insertions(+), 3 deletions(-)
 create mode 100644 packages/core/src/embeddingUtils.ts

diff --git a/packages/core/src/Node.ts b/packages/core/src/Node.ts
index 00a2c7756..1a27ad219 100644
--- a/packages/core/src/Node.ts
+++ b/packages/core/src/Node.ts
@@ -12,6 +12,10 @@ export enum DocumentRelationship {
 export class Node implements BaseDocument {
   relationships: { [key in DocumentRelationship]: string | string[] };
 
+  constructor(relationships: { [key in DocumentRelationship]: string | string[] }) {
+    this.relationships = relationships;
+  }
+
   getText(): string {
     throw new Error("Method not implemented.");
   }
diff --git a/packages/core/src/embeddingUtils.ts b/packages/core/src/embeddingUtils.ts
new file mode 100644
index 000000000..90e09e487
--- /dev/null
+++ b/packages/core/src/embeddingUtils.ts
@@ -0,0 +1,35 @@
+import _ from 'lodash';
+import { VectorStoreQueryMode } from './storage/vectorStore/types';
+
+export function getTopKEmbeddings(
+  queryEmbedding: number[],
+  embeddings: number[][],
+  similarityFn?: ((queryEmbedding: number[], emb: number[]) => number),
+  similarityTopK?: number,
+  embeddingIds?: number[],
+  similarityCutoff?: number,
+): [number[], number[]] {
+  throw new Error('Not implemented');
+}
+
+export function getTopKEmbeddingsLearner(
+  queryEmbedding: number[],
+  embeddings: number[][],
+  similarityTopK?: number,
+  embeddingIds?: number[],
+  queryMode: VectorStoreQueryMode = VectorStoreQueryMode.SVM,
+): [number[], number[]] {
+  throw new Error('Not implemented');
+}
+
+export function getTopKMMREmbeddings(
+  queryEmbedding: number[],
+  embeddings: number[][],
+  similarityFn?: ((queryEmbedding: number[], emb: number[]) => number),
+  similarityTopK?: number,
+  embeddingIds?: number[],
+  similarityCutoff?: number,
+  mmrThreshold?: number,
+): [number[], number[]] {
+  throw new Error('Not implemented');
+}
diff --git a/packages/core/src/storage/docStore/utils.ts b/packages/core/src/storage/docStore/utils.ts
index f6f1d23bb..e7667ed5b 100644
--- a/packages/core/src/storage/docStore/utils.ts
+++ b/packages/core/src/storage/docStore/utils.ts
@@ -1,5 +1,5 @@
 import { Node } from "../../Node";
-import { BaseDocument, NodeType } from '../../Document';
+import { BaseDocument, NodeType, Document } from '../../Document';
 import { DATA_KEY, TYPE_KEY } from '../constants';
 
 
@@ -16,9 +16,9 @@ export function jsonToDoc(docDict: Record<string, any>): BaseDocument {
   let doc: BaseDocument;
 
   if (docType === NodeType.DOCUMENT) {
-      doc = Document.fromDict(dataDict);
+      doc = new Document(dataDict.docId, dataDict.text);
   } else if (docType === NodeType.TEXT) {
-      doc = Node.fromDict(dataDict);
+      doc = new Node(dataDict.relationships);
   } else {
       throw new Error(`Unknown doc type: ${docType}`);
   }
-- 
GitLab