Compare commits

...

7 Commits

Author SHA1 Message Date
sweep-ai[bot] 33f9783618 Updated packages/core/src/indices/vectorStore/VectorStoreIndex.ts 2023-08-14 17:44:46 +00:00
sweep-ai[bot] 956904a18e Updated packages/core/src/NodeParser.ts 2023-08-14 17:44:16 +00:00
sweep-ai[bot] 69aa5119ec Added getContent method to Document class 2023-08-14 17:43:27 +00:00
sweep-ai[bot] 9c7adc34e5 Modified getNodeEmbeddingResults to handle JsonNode instances 2023-08-14 17:38:58 +00:00
sweep-ai[bot] 46d5ade931 Created JsonNode class to handle JSON data 2023-08-14 17:38:21 +00:00
sweep-ai[bot] c1283402ca Added support for JsonDocument in getNodesFromDocument function 2023-08-14 17:37:39 +00:00
sweep-ai[bot] eb8629456c Added JsonDocument class to handle JSON data 2023-08-14 17:36:44 +00:00
5 changed files with 69 additions and 5 deletions
+15
View File
@@ -0,0 +1,15 @@
import { Node } from './Node';
export class Document extends Node {
private text: string;
constructor(text: string) {
super();
this.text = text;
}
getContent(): string {
return this.text;
}
}
+15
View File
@@ -0,0 +1,15 @@
import { Document } from './Document';
export class JsonDocument extends Document {
private jsonData: object;
constructor(jsonData: object) {
super();
this.jsonData = jsonData;
}
getContent(): string {
return JSON.stringify(this.jsonData);
}
}
+15
View File
@@ -0,0 +1,15 @@
import { Node } from './Node';
export class JsonNode extends Node {
private jsonData: object;
constructor(jsonData: object) {
super();
this.jsonData = jsonData;
}
getContent(): string {
return JSON.stringify(this.jsonData);
}
}
+14 -4
View File
@@ -1,4 +1,6 @@
import { Document, NodeRelationship, TextNode } from "./Node";
import { JsonDocument } from "./JsonDocument";
import { JsonNode } from "./JsonNode";
import { SentenceSplitter } from "./TextSplitter";
import { DEFAULT_CHUNK_OVERLAP, DEFAULT_CHUNK_SIZE } from "./constants";
@@ -37,10 +39,18 @@ export function getNodesFromDocument(
const textSplits = getTextSplitsFromDocument(document, textSplitter);
textSplits.forEach((textSplit) => {
const node = new TextNode({
text: textSplit,
metadata: includeMetadata ? document.metadata : {},
});
let node;
if (document instanceof JsonDocument) {
node = new JsonNode({
jsonData: textSplit,
metadata: includeMetadata ? document.metadata : {},
});
} else {
node = new TextNode({
text: textSplit,
metadata: includeMetadata ? document.metadata : {},
});
}
node.relationships[NodeRelationship.SOURCE] = document.asRelatedNodeInfo();
nodes.push(node);
});
@@ -3,6 +3,8 @@ import {
BaseNode,
MetadataMode,
NodeWithEmbedding,
JsonNode,
} from "../../Node";
} from "../../Node";
import { BaseQueryEngine, RetrieverQueryEngine } from "../../QueryEngine";
import { VectorIndexRetriever } from "./VectorIndexRetriever";
@@ -132,9 +134,16 @@ export class VectorStoreIndex extends BaseIndex<IndexDict> {
if (logProgress) {
console.log(`getting embedding for node ${i}/${nodes.length}`);
}
const embedding = await serviceContext.embedModel.getTextEmbedding(
let embedding;
if (node instanceof JsonNode) {
embedding = await serviceContext.embedModel.getJsonEmbedding(
node.getContent(MetadataMode.EMBED)
);
} else {
embedding = await serviceContext.embedModel.getTextEmbedding(
node.getContent(MetadataMode.EMBED)
);
}
nodesWithEmbeddings.push({ node, embedding });
}