langchain 0.0.7 → 0.0.8
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/agents.mjs +1 -0
- package/chains.mjs +1 -0
- package/dist/agents/tests/{agent.test.d.ts → agent.int.test.d.ts} +0 -0
- package/dist/agents/tests/{agent.test.js → agent.int.test.js} +2 -3
- package/dist/agents/tests/agent.int.test.js.map +1 -0
- package/dist/chains/base.d.ts +1 -0
- package/dist/chains/base.js +3 -2
- package/dist/chains/base.js.map +1 -1
- package/dist/chains/index.d.ts +1 -1
- package/dist/chains/index.js.map +1 -1
- package/dist/chains/llm_chain.d.ts +3 -2
- package/dist/chains/llm_chain.js +1 -1
- package/dist/chains/llm_chain.js.map +1 -1
- package/dist/chains/question_answering/tests/{load.test.d.ts → load.int.test.d.ts} +0 -0
- package/dist/chains/question_answering/tests/{load.test.js → load.int.test.js} +1 -1
- package/dist/chains/question_answering/tests/load.int.test.js.map +1 -0
- package/dist/chains/tests/{chat_vector_db_qa_chain.test.d.ts → chat_vector_db_qa_chain.int.test.d.ts} +0 -0
- package/dist/chains/tests/{chat_vector_db_qa_chain.test.js → chat_vector_db_qa_chain.int.test.js} +1 -1
- package/dist/chains/tests/chat_vector_db_qa_chain.int.test.js.map +1 -0
- package/dist/chains/tests/{combine_docs_chain.test.d.ts → combine_docs_chain.int.test.d.ts} +0 -0
- package/dist/chains/tests/{combine_docs_chain.test.js → combine_docs_chain.int.test.js} +1 -1
- package/dist/chains/tests/combine_docs_chain.int.test.js.map +1 -0
- package/dist/chains/tests/{llm_chain.test.d.ts → llm_chain.int.test.d.ts} +0 -0
- package/dist/chains/tests/{llm_chain.test.js → llm_chain.int.test.js} +1 -1
- package/dist/chains/tests/llm_chain.int.test.js.map +1 -0
- package/dist/chains/tests/{vector_db_qa_chain.test.d.ts → vector_db_qa_chain.int.test.d.ts} +0 -0
- package/dist/chains/tests/{vector_db_qa_chain.test.js → vector_db_qa_chain.int.test.js} +1 -1
- package/dist/chains/tests/vector_db_qa_chain.int.test.js.map +1 -0
- package/dist/docstore/base.d.ts +5 -0
- package/dist/docstore/base.js +7 -0
- package/dist/docstore/base.js.map +1 -0
- package/dist/docstore/in_memory.d.ts +10 -0
- package/dist/docstore/in_memory.js +36 -0
- package/dist/docstore/in_memory.js.map +1 -0
- package/dist/docstore/index.d.ts +3 -0
- package/dist/docstore/index.js +10 -0
- package/dist/docstore/index.js.map +1 -0
- package/dist/embeddings/fake.d.ts +5 -0
- package/dist/embeddings/fake.js +14 -0
- package/dist/embeddings/fake.js.map +1 -0
- package/dist/embeddings/tests/{openai.test.d.ts → openai.int.test.d.ts} +0 -0
- package/dist/embeddings/tests/{openai.test.js → openai.int.test.js} +1 -1
- package/dist/embeddings/tests/openai.int.test.js.map +1 -0
- package/dist/llms/index.d.ts +1 -1
- package/dist/llms/index.js +2 -1
- package/dist/llms/index.js.map +1 -1
- package/dist/llms/openai.d.ts +13 -0
- package/dist/llms/openai.js +62 -1
- package/dist/llms/openai.js.map +1 -1
- package/dist/llms/tests/{cohere.test.d.ts → cohere.int.test.d.ts} +0 -0
- package/dist/llms/tests/{cohere.test.js → cohere.int.test.js} +1 -1
- package/dist/llms/tests/cohere.int.test.js.map +1 -0
- package/dist/llms/tests/{openai.test.d.ts → openai.int.test.d.ts} +0 -0
- package/dist/llms/tests/{openai.test.js → openai.int.test.js} +1 -1
- package/dist/llms/tests/openai.int.test.js.map +1 -0
- package/dist/tests/text_splitter.test.d.ts +1 -0
- package/dist/tests/text_splitter.test.js +141 -0
- package/dist/tests/text_splitter.test.js.map +1 -0
- package/dist/text_splitter.d.ts +17 -0
- package/dist/text_splitter.js +69 -1
- package/dist/text_splitter.js.map +1 -1
- package/dist/util/hub.js +3 -2
- package/dist/util/hub.js.map +1 -1
- package/dist/vectorstores/base.d.ts +1 -5
- package/dist/vectorstores/base.js +2 -11
- package/dist/vectorstores/base.js.map +1 -1
- package/dist/vectorstores/hnswlib.d.ts +7 -4
- package/dist/vectorstores/hnswlib.js +24 -9
- package/dist/vectorstores/hnswlib.js.map +1 -1
- package/dist/vectorstores/index.d.ts +1 -0
- package/dist/vectorstores/index.js +3 -1
- package/dist/vectorstores/index.js.map +1 -1
- package/dist/vectorstores/pinecone.d.ts +17 -0
- package/dist/vectorstores/pinecone.js +78 -0
- package/dist/vectorstores/pinecone.js.map +1 -0
- package/dist/vectorstores/tests/hnswlib.int.test.d.ts +1 -0
- package/dist/vectorstores/tests/hnswlib.int.test.js +61 -0
- package/dist/vectorstores/tests/hnswlib.int.test.js.map +1 -0
- package/dist/vectorstores/tests/hnswlib.test.js +29 -38
- package/dist/vectorstores/tests/hnswlib.test.js.map +1 -1
- package/docstore.d.ts +1 -0
- package/docstore.js +1 -0
- package/docstore.mjs +1 -0
- package/document.mjs +1 -0
- package/embeddings.mjs +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.mjs +1 -0
- package/llms.mjs +1 -0
- package/memory.mjs +1 -0
- package/package.json +110 -8
- package/prompts.mjs +1 -0
- package/text_splitter.mjs +1 -0
- package/tools.mjs +1 -0
- package/vectorstores.mjs +1 -0
- package/dist/agents/tests/agent.test.js.map +0 -1
- package/dist/chains/question_answering/tests/load.test.js.map +0 -1
- package/dist/chains/tests/chat_vector_db_qa_chain.test.js.map +0 -1
- package/dist/chains/tests/combine_docs_chain.test.js.map +0 -1
- package/dist/chains/tests/llm_chain.test.js.map +0 -1
- package/dist/chains/tests/vector_db_qa_chain.test.js.map +0 -1
- package/dist/embeddings/tests/openai.test.js.map +0 -1
- package/dist/llms/tests/cohere.test.js.map +0 -1
- package/dist/llms/tests/openai.test.js.map +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const globals_1 = require("@jest/globals");
|
|
4
|
+
const document_1 = require("../document");
|
|
5
|
+
const text_splitter_1 = require("../text_splitter");
|
|
6
|
+
(0, globals_1.test)("Test splitting by character count.", () => {
|
|
7
|
+
const text = "foo bar baz 123";
|
|
8
|
+
const splitter = new text_splitter_1.CharacterTextSplitter({
|
|
9
|
+
separator: " ",
|
|
10
|
+
chunkSize: 7,
|
|
11
|
+
chunkOverlap: 3,
|
|
12
|
+
});
|
|
13
|
+
const output = splitter.splitText(text);
|
|
14
|
+
const expectedOutput = ["foo bar", "bar baz", "baz 123"];
|
|
15
|
+
(0, globals_1.expect)(output).toEqual(expectedOutput);
|
|
16
|
+
});
|
|
17
|
+
(0, globals_1.test)("Test splitting by character count doesn't create empty documents.", () => {
|
|
18
|
+
const text = "foo bar";
|
|
19
|
+
const splitter = new text_splitter_1.CharacterTextSplitter({
|
|
20
|
+
separator: " ",
|
|
21
|
+
chunkSize: 2,
|
|
22
|
+
chunkOverlap: 0,
|
|
23
|
+
});
|
|
24
|
+
const output = splitter.splitText(text);
|
|
25
|
+
const expectedOutput = ["foo", "bar"];
|
|
26
|
+
(0, globals_1.expect)(output).toEqual(expectedOutput);
|
|
27
|
+
});
|
|
28
|
+
(0, globals_1.test)("Test splitting by character count on long words.", () => {
|
|
29
|
+
const text = "foo bar baz a a";
|
|
30
|
+
const splitter = new text_splitter_1.CharacterTextSplitter({
|
|
31
|
+
separator: " ",
|
|
32
|
+
chunkSize: 3,
|
|
33
|
+
chunkOverlap: 1,
|
|
34
|
+
});
|
|
35
|
+
const output = splitter.splitText(text);
|
|
36
|
+
const expectedOutput = ["foo", "bar", "baz", "a a"];
|
|
37
|
+
(0, globals_1.expect)(output).toEqual(expectedOutput);
|
|
38
|
+
});
|
|
39
|
+
(0, globals_1.test)("Test splitting by character count when shorter words are first.", () => {
|
|
40
|
+
const text = "a a foo bar baz";
|
|
41
|
+
const splitter = new text_splitter_1.CharacterTextSplitter({
|
|
42
|
+
separator: " ",
|
|
43
|
+
chunkSize: 3,
|
|
44
|
+
chunkOverlap: 1,
|
|
45
|
+
});
|
|
46
|
+
const output = splitter.splitText(text);
|
|
47
|
+
const expectedOutput = ["a a", "foo", "bar", "baz"];
|
|
48
|
+
(0, globals_1.expect)(output).toEqual(expectedOutput);
|
|
49
|
+
});
|
|
50
|
+
(0, globals_1.test)("Test splitting by characters when splits not found easily.", () => {
|
|
51
|
+
const text = "foo bar baz 123";
|
|
52
|
+
const splitter = new text_splitter_1.CharacterTextSplitter({
|
|
53
|
+
separator: " ",
|
|
54
|
+
chunkSize: 1,
|
|
55
|
+
chunkOverlap: 0,
|
|
56
|
+
});
|
|
57
|
+
const output = splitter.splitText(text);
|
|
58
|
+
const expectedOutput = ["foo", "bar", "baz", "123"];
|
|
59
|
+
(0, globals_1.expect)(output).toEqual(expectedOutput);
|
|
60
|
+
});
|
|
61
|
+
(0, globals_1.test)("Test invalid arguments.", () => {
|
|
62
|
+
(0, globals_1.expect)(() => {
|
|
63
|
+
const res = new text_splitter_1.CharacterTextSplitter({ chunkSize: 2, chunkOverlap: 4 });
|
|
64
|
+
console.log(res);
|
|
65
|
+
}).toThrow();
|
|
66
|
+
});
|
|
67
|
+
(0, globals_1.test)("Test create documents method.", () => {
|
|
68
|
+
const texts = ["foo bar", "baz"];
|
|
69
|
+
const splitter = new text_splitter_1.CharacterTextSplitter({
|
|
70
|
+
separator: " ",
|
|
71
|
+
chunkSize: 3,
|
|
72
|
+
chunkOverlap: 0,
|
|
73
|
+
});
|
|
74
|
+
const docs = splitter.createDocuments(texts);
|
|
75
|
+
const expectedDocs = [
|
|
76
|
+
new document_1.Document({ pageContent: "foo" }),
|
|
77
|
+
new document_1.Document({ pageContent: "bar" }),
|
|
78
|
+
new document_1.Document({ pageContent: "baz" }),
|
|
79
|
+
];
|
|
80
|
+
(0, globals_1.expect)(docs).toEqual(expectedDocs);
|
|
81
|
+
});
|
|
82
|
+
(0, globals_1.test)("Test create documents with metadata method.", () => {
|
|
83
|
+
const texts = ["foo bar", "baz"];
|
|
84
|
+
const splitter = new text_splitter_1.CharacterTextSplitter({
|
|
85
|
+
separator: " ",
|
|
86
|
+
chunkSize: 3,
|
|
87
|
+
chunkOverlap: 0,
|
|
88
|
+
});
|
|
89
|
+
const docs = splitter.createDocuments(texts, [
|
|
90
|
+
{ source: "1" },
|
|
91
|
+
{ source: "2" },
|
|
92
|
+
]);
|
|
93
|
+
const expectedDocs = [
|
|
94
|
+
new document_1.Document({ pageContent: "foo", metadata: { source: "1" } }),
|
|
95
|
+
new document_1.Document({ pageContent: "bar", metadata: { source: "1" } }),
|
|
96
|
+
new document_1.Document({ pageContent: "baz", metadata: { source: "2" } }),
|
|
97
|
+
];
|
|
98
|
+
(0, globals_1.expect)(docs).toEqual(expectedDocs);
|
|
99
|
+
});
|
|
100
|
+
(0, globals_1.test)("Test iterative text splitter.", () => {
|
|
101
|
+
const text = `Hi.\n\nI'm Harrison.\n\nHow? Are? You?\nOkay then f f f f.
|
|
102
|
+
This is a weird text to write, but gotta test the splittingggg some how.\n\n
|
|
103
|
+
Bye!\n\n-H.`;
|
|
104
|
+
const splitter = new text_splitter_1.RecursiveCharacterTextSplitter({
|
|
105
|
+
chunkSize: 10,
|
|
106
|
+
chunkOverlap: 1,
|
|
107
|
+
});
|
|
108
|
+
const output = splitter.splitText(text);
|
|
109
|
+
const expectedOutput = [
|
|
110
|
+
"Hi.",
|
|
111
|
+
"I'm",
|
|
112
|
+
"Harrison.",
|
|
113
|
+
"How? Are?",
|
|
114
|
+
"You?",
|
|
115
|
+
"Okay then f",
|
|
116
|
+
"f f f f.",
|
|
117
|
+
"This is a",
|
|
118
|
+
"a weird",
|
|
119
|
+
"text to",
|
|
120
|
+
"write, but",
|
|
121
|
+
"gotta test",
|
|
122
|
+
"the",
|
|
123
|
+
"splitting",
|
|
124
|
+
"gggg",
|
|
125
|
+
"some how.",
|
|
126
|
+
"Bye!\n\n-H.",
|
|
127
|
+
];
|
|
128
|
+
(0, globals_1.expect)(output).toEqual(expectedOutput);
|
|
129
|
+
});
|
|
130
|
+
(0, globals_1.test)("Token text splitter", () => {
|
|
131
|
+
const text = "foo bar baz a a";
|
|
132
|
+
const splitter = new text_splitter_1.TokenTextSplitter({
|
|
133
|
+
encodingName: "r50k_base",
|
|
134
|
+
chunkSize: 3,
|
|
135
|
+
chunkOverlap: 0,
|
|
136
|
+
});
|
|
137
|
+
const output = splitter.splitText(text);
|
|
138
|
+
const expectedOutput = ["foo bar b", "az a a"];
|
|
139
|
+
(0, globals_1.expect)(output).toEqual(expectedOutput);
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=text_splitter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text_splitter.test.js","sourceRoot":"","sources":["../../tests/text_splitter.test.ts"],"names":[],"mappings":"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"}
|
package/dist/text_splitter.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type * as tiktoken from "@dqbd/tiktoken";
|
|
1
2
|
import { Document } from "./document";
|
|
2
3
|
interface TextSplitterParams {
|
|
3
4
|
chunkSize: number;
|
|
@@ -29,4 +30,20 @@ export declare class RecursiveCharacterTextSplitter extends TextSplitter impleme
|
|
|
29
30
|
constructor(fields?: Partial<RecursiveCharacterTextSplitterParams>);
|
|
30
31
|
splitText(text: string): string[];
|
|
31
32
|
}
|
|
33
|
+
export interface TokenTextSplitterParams extends TextSplitterParams {
|
|
34
|
+
encodingName: tiktoken.TiktokenEmbedding;
|
|
35
|
+
allowedSpecial: "all" | Set<string>;
|
|
36
|
+
disallowedSpecial: "all" | Array<string>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Implementation of splitter which looks at tokens.
|
|
40
|
+
*/
|
|
41
|
+
export declare class TokenTextSplitter extends TextSplitter implements TokenTextSplitterParams {
|
|
42
|
+
encodingName: tiktoken.TiktokenEmbedding;
|
|
43
|
+
allowedSpecial: "all" | Set<string>;
|
|
44
|
+
disallowedSpecial: "all" | Array<string>;
|
|
45
|
+
private tokenizer;
|
|
46
|
+
constructor(fields?: Partial<TokenTextSplitterParams>);
|
|
47
|
+
splitText(text: string): string[];
|
|
48
|
+
}
|
|
32
49
|
export {};
|
package/dist/text_splitter.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RecursiveCharacterTextSplitter = exports.CharacterTextSplitter = void 0;
|
|
3
|
+
exports.TokenTextSplitter = exports.RecursiveCharacterTextSplitter = exports.CharacterTextSplitter = void 0;
|
|
4
4
|
const document_1 = require("./document");
|
|
5
5
|
class TextSplitter {
|
|
6
6
|
constructor(fields) {
|
|
@@ -164,4 +164,72 @@ class RecursiveCharacterTextSplitter extends TextSplitter {
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
exports.RecursiveCharacterTextSplitter = RecursiveCharacterTextSplitter;
|
|
167
|
+
/**
|
|
168
|
+
* Implementation of splitter which looks at tokens.
|
|
169
|
+
*/
|
|
170
|
+
class TokenTextSplitter extends TextSplitter {
|
|
171
|
+
constructor(fields) {
|
|
172
|
+
var _a, _b, _c;
|
|
173
|
+
super(fields);
|
|
174
|
+
Object.defineProperty(this, "encodingName", {
|
|
175
|
+
enumerable: true,
|
|
176
|
+
configurable: true,
|
|
177
|
+
writable: true,
|
|
178
|
+
value: void 0
|
|
179
|
+
});
|
|
180
|
+
Object.defineProperty(this, "allowedSpecial", {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
configurable: true,
|
|
183
|
+
writable: true,
|
|
184
|
+
value: void 0
|
|
185
|
+
});
|
|
186
|
+
Object.defineProperty(this, "disallowedSpecial", {
|
|
187
|
+
enumerable: true,
|
|
188
|
+
configurable: true,
|
|
189
|
+
writable: true,
|
|
190
|
+
value: void 0
|
|
191
|
+
});
|
|
192
|
+
Object.defineProperty(this, "tokenizer", {
|
|
193
|
+
enumerable: true,
|
|
194
|
+
configurable: true,
|
|
195
|
+
writable: true,
|
|
196
|
+
value: void 0
|
|
197
|
+
});
|
|
198
|
+
this.encodingName = (_a = fields === null || fields === void 0 ? void 0 : fields.encodingName) !== null && _a !== void 0 ? _a : "gpt2";
|
|
199
|
+
this.allowedSpecial = (_b = fields === null || fields === void 0 ? void 0 : fields.allowedSpecial) !== null && _b !== void 0 ? _b : new Set();
|
|
200
|
+
this.disallowedSpecial = (_c = fields === null || fields === void 0 ? void 0 : fields.disallowedSpecial) !== null && _c !== void 0 ? _c : "all";
|
|
201
|
+
if ((fields === null || fields === void 0 ? void 0 : fields.allowedSpecial) != null) {
|
|
202
|
+
throw new Error("allowedSpecial is not implemented yet.");
|
|
203
|
+
}
|
|
204
|
+
if ((fields === null || fields === void 0 ? void 0 : fields.disallowedSpecial) != null) {
|
|
205
|
+
throw new Error("disallowedSpecial is not implemented yet.");
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
const tiktoken =
|
|
209
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires, global-require
|
|
210
|
+
require("@dqbd/tiktoken");
|
|
211
|
+
this.tokenizer = tiktoken.get_encoding(this.encodingName);
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
console.error(err);
|
|
215
|
+
throw new Error("Please install @dqbd/tiktoken as a dependency with, e.g. `npm install -S @dqbd/tiktoken`");
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
splitText(text) {
|
|
219
|
+
const splits = [];
|
|
220
|
+
const input_ids = this.tokenizer.encode(text);
|
|
221
|
+
let start_idx = 0;
|
|
222
|
+
let cur_idx = Math.min(start_idx + this.chunkSize, input_ids.length);
|
|
223
|
+
let chunk_ids = input_ids.slice(start_idx, cur_idx);
|
|
224
|
+
const decoder = new TextDecoder();
|
|
225
|
+
while (start_idx < input_ids.length) {
|
|
226
|
+
splits.push(decoder.decode(this.tokenizer.decode(chunk_ids)));
|
|
227
|
+
start_idx += this.chunkSize - this.chunkOverlap;
|
|
228
|
+
cur_idx = Math.min(start_idx + this.chunkSize, input_ids.length);
|
|
229
|
+
chunk_ids = input_ids.slice(start_idx, cur_idx);
|
|
230
|
+
}
|
|
231
|
+
return splits;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.TokenTextSplitter = TokenTextSplitter;
|
|
167
235
|
//# sourceMappingURL=text_splitter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text_splitter.js","sourceRoot":"","sources":["../text_splitter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"text_splitter.js","sourceRoot":"","sources":["../text_splitter.ts"],"names":[],"mappings":"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"}
|
package/dist/util/hub.js
CHANGED
|
@@ -12,6 +12,7 @@ const index_1 = require("./index");
|
|
|
12
12
|
const HUB_PATH_REGEX = /lc(@[^:]+)?:\/\/(.*)/;
|
|
13
13
|
const DEFAULT_REF = (_a = process.env.LANGCHAIN_HUB_DEFAULT_REF) !== null && _a !== void 0 ? _a : "master";
|
|
14
14
|
const URL_BASE = (_b = process.env.LANGCHAIN_HUB_URL_BASE) !== null && _b !== void 0 ? _b : "https://raw.githubusercontent.com/hwchase17/langchain-hub/";
|
|
15
|
+
const URL_PATH_SEPARATOR = "/";
|
|
15
16
|
const loadFromHub = async (uri, loader, validPrefix, validSuffixes, values = {}) => {
|
|
16
17
|
const match = uri.match(HUB_PATH_REGEX);
|
|
17
18
|
if (!match) {
|
|
@@ -19,7 +20,7 @@ const loadFromHub = async (uri, loader, validPrefix, validSuffixes, values = {})
|
|
|
19
20
|
}
|
|
20
21
|
const [rawRef, remotePath] = match.slice(1);
|
|
21
22
|
const ref = rawRef ? rawRef.slice(1) : DEFAULT_REF;
|
|
22
|
-
const parts = remotePath.split(
|
|
23
|
+
const parts = remotePath.split(URL_PATH_SEPARATOR);
|
|
23
24
|
if (parts[0] !== validPrefix) {
|
|
24
25
|
return undefined;
|
|
25
26
|
}
|
|
@@ -33,7 +34,7 @@ const loadFromHub = async (uri, loader, validPrefix, validSuffixes, values = {})
|
|
|
33
34
|
}
|
|
34
35
|
const text = await res.text();
|
|
35
36
|
const tmpdir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), "langchain"));
|
|
36
|
-
const file = path_1.default.join(tmpdir, path_1.default.basename(remotePath));
|
|
37
|
+
const file = path_1.default.join(tmpdir, path_1.default.basename(remotePath.replace(URL_PATH_SEPARATOR, path_1.default.sep)));
|
|
37
38
|
fs_1.default.writeFileSync(file, text);
|
|
38
39
|
return loader(file, values);
|
|
39
40
|
};
|
package/dist/util/hub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../../util/hub.ts"],"names":[],"mappings":";;;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AACpB,4CAAoB;AACpB,mCAA2C;AAE3C,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAC9C,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,mCAAI,QAAQ,CAAC;AACtE,MAAM,QAAQ,GACZ,MAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,mCAClC,4DAA4D,CAAC;
|
|
1
|
+
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../../util/hub.ts"],"names":[],"mappings":";;;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AACpB,4CAAoB;AACpB,mCAA2C;AAE3C,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAC9C,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,mCAAI,QAAQ,CAAC;AACtE,MAAM,QAAQ,GACZ,MAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,mCAClC,4DAA4D,CAAC;AAI/D,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAExB,MAAM,WAAW,GAAG,KAAK,EAC9B,GAAW,EACX,MAA4C,EAC5C,WAAmB,EACnB,aAA0B,EAC1B,SAAqB,EAAE,EACC,EAAE;IAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACnD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;QAC5B,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QACzD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;IAED,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;KAClD;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,YAAE,CAAC,WAAW,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CACpB,MAAM,EACN,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAI,CAAC,GAAG,CAAC,CAAC,CAChE,CAAC;IACF,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC;AApCW,QAAA,WAAW,eAoCtB"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { Embeddings } from "../embeddings/base";
|
|
2
2
|
import { Document } from "../document";
|
|
3
|
-
export interface DocStore {
|
|
4
|
-
[key: number]: object;
|
|
5
|
-
}
|
|
6
3
|
export declare abstract class VectorStore {
|
|
7
4
|
embeddings: Embeddings;
|
|
8
|
-
|
|
5
|
+
constructor(embeddings: Embeddings);
|
|
9
6
|
abstract addVectors(vectors: number[][], documents: Document[]): Promise<void>;
|
|
10
7
|
abstract similaritySearchVectorWithScore(query: number[], k: number): Promise<[Document, number][]>;
|
|
11
|
-
addDocuments(documents: Document[]): Promise<void>;
|
|
12
8
|
similaritySearch(query: string, k?: number): Promise<Document[]>;
|
|
13
9
|
similaritySearchWithScore(query: string, k?: number): Promise<[object, number][]>;
|
|
14
10
|
}
|
|
@@ -2,23 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SaveableVectorStore = exports.VectorStore = void 0;
|
|
4
4
|
class VectorStore {
|
|
5
|
-
constructor() {
|
|
5
|
+
constructor(embeddings) {
|
|
6
6
|
Object.defineProperty(this, "embeddings", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
configurable: true,
|
|
9
9
|
writable: true,
|
|
10
10
|
value: void 0
|
|
11
11
|
});
|
|
12
|
-
|
|
13
|
-
enumerable: true,
|
|
14
|
-
configurable: true,
|
|
15
|
-
writable: true,
|
|
16
|
-
value: void 0
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
async addDocuments(documents) {
|
|
20
|
-
const texts = documents.map(({ pageContent }) => pageContent);
|
|
21
|
-
this.addVectors(await this.embeddings.embedDocuments(texts), documents);
|
|
12
|
+
this.embeddings = embeddings;
|
|
22
13
|
}
|
|
23
14
|
async similaritySearch(query, k = 4) {
|
|
24
15
|
const results = await this.similaritySearchVectorWithScore(await this.embeddings.embedQuery(query), k);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../vectorstores/base.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../vectorstores/base.ts"],"names":[],"mappings":";;;AAGA,MAAsB,WAAW;IAG/B,YAAY,UAAsB;QAFlC;;;;;WAAuB;QAGrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAYD,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,CAAC,GAAG,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CACxD,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EACvC,CAAC,CACF,CAAC;QAEF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,KAAa,EACb,CAAC,GAAG,CAAC;QAEL,OAAO,IAAI,CAAC,+BAA+B,CACzC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EACvC,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAnCD,kCAmCC;AAED,MAAsB,mBAAoB,SAAQ,WAAW;IAG3D,MAAM,CAAC,IAAI,CACT,UAAkB,EAClB,WAAuB;QAEvB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;CACF;AATD,kDASC"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import type { HierarchicalNSW as HierarchicalNSWT, SpaceName } from "hnswlib-node";
|
|
2
2
|
import { Embeddings } from "../embeddings/base";
|
|
3
|
-
import {
|
|
3
|
+
import { SaveableVectorStore } from "./base";
|
|
4
4
|
import { Document } from "../document";
|
|
5
|
+
import { InMemoryDocstore } from "../docstore";
|
|
5
6
|
export interface HNSWLibArgs {
|
|
6
7
|
space: SpaceName;
|
|
7
8
|
numDimensions?: number;
|
|
8
9
|
}
|
|
9
10
|
export declare class HNSWLib extends SaveableVectorStore {
|
|
10
11
|
index?: HierarchicalNSWT;
|
|
12
|
+
docstore: InMemoryDocstore;
|
|
11
13
|
args: HNSWLibArgs;
|
|
12
|
-
constructor(args: HNSWLibArgs, embeddings: Embeddings, docstore:
|
|
14
|
+
constructor(args: HNSWLibArgs, embeddings: Embeddings, docstore: InMemoryDocstore, index?: HierarchicalNSWT);
|
|
15
|
+
addDocuments(documents: Document[]): Promise<void>;
|
|
13
16
|
addVectors(vectors: number[][], documents: Document[]): Promise<void>;
|
|
14
17
|
similaritySearchVectorWithScore(query: number[], k: number): Promise<[Document, number][]>;
|
|
15
18
|
save(directory: string): Promise<void>;
|
|
16
19
|
static load(directory: string, embeddings: Embeddings): Promise<HNSWLib>;
|
|
17
|
-
static fromTexts(texts: string[], metadatas: object[], embeddings: Embeddings): Promise<HNSWLib>;
|
|
18
|
-
static fromDocuments(docs: Document[], embeddings: Embeddings): Promise<HNSWLib>;
|
|
20
|
+
static fromTexts(texts: string[], metadatas: object[], embeddings: Embeddings, docstore?: InMemoryDocstore): Promise<HNSWLib>;
|
|
21
|
+
static fromDocuments(docs: Document[], embeddings: Embeddings, docstore?: InMemoryDocstore): Promise<HNSWLib>;
|
|
19
22
|
}
|
|
@@ -8,6 +8,7 @@ const promises_1 = __importDefault(require("fs/promises"));
|
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const base_1 = require("./base");
|
|
10
10
|
const document_1 = require("../document");
|
|
11
|
+
const docstore_1 = require("../docstore");
|
|
11
12
|
let HierarchicalNSW = null;
|
|
12
13
|
try {
|
|
13
14
|
// eslint-disable-next-line global-require,import/no-extraneous-dependencies
|
|
@@ -18,13 +19,19 @@ catch (_a) {
|
|
|
18
19
|
}
|
|
19
20
|
class HNSWLib extends base_1.SaveableVectorStore {
|
|
20
21
|
constructor(args, embeddings, docstore, index) {
|
|
21
|
-
super();
|
|
22
|
+
super(embeddings);
|
|
22
23
|
Object.defineProperty(this, "index", {
|
|
23
24
|
enumerable: true,
|
|
24
25
|
configurable: true,
|
|
25
26
|
writable: true,
|
|
26
27
|
value: void 0
|
|
27
28
|
});
|
|
29
|
+
Object.defineProperty(this, "docstore", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true,
|
|
32
|
+
writable: true,
|
|
33
|
+
value: void 0
|
|
34
|
+
});
|
|
28
35
|
Object.defineProperty(this, "args", {
|
|
29
36
|
enumerable: true,
|
|
30
37
|
configurable: true,
|
|
@@ -36,6 +43,10 @@ class HNSWLib extends base_1.SaveableVectorStore {
|
|
|
36
43
|
this.embeddings = embeddings;
|
|
37
44
|
this.docstore = docstore;
|
|
38
45
|
}
|
|
46
|
+
async addDocuments(documents) {
|
|
47
|
+
const texts = documents.map(({ pageContent }) => pageContent);
|
|
48
|
+
return this.addVectors(await this.embeddings.embedDocuments(texts), documents);
|
|
49
|
+
}
|
|
39
50
|
async addVectors(vectors, documents) {
|
|
40
51
|
if (vectors.length === 0) {
|
|
41
52
|
return;
|
|
@@ -63,11 +74,12 @@ class HNSWLib extends base_1.SaveableVectorStore {
|
|
|
63
74
|
const capacity = this.index.getMaxElements();
|
|
64
75
|
const needed = this.index.getCurrentCount() + vectors.length;
|
|
65
76
|
if (needed > capacity) {
|
|
66
|
-
this.index.resizeIndex(needed
|
|
77
|
+
this.index.resizeIndex(needed);
|
|
67
78
|
}
|
|
79
|
+
const docstoreSize = this.docstore.count;
|
|
68
80
|
for (let i = 0; i < vectors.length; i += 1) {
|
|
69
|
-
this.index.addPoint(vectors[i], i);
|
|
70
|
-
this.docstore[i]
|
|
81
|
+
this.index.addPoint(vectors[i], docstoreSize + i);
|
|
82
|
+
this.docstore.add({ [docstoreSize + i]: documents[i] });
|
|
71
83
|
}
|
|
72
84
|
}
|
|
73
85
|
async similaritySearchVectorWithScore(query, k) {
|
|
@@ -75,7 +87,10 @@ class HNSWLib extends base_1.SaveableVectorStore {
|
|
|
75
87
|
throw new Error("Vector store not initialised yet. Try calling `addTexts` first.");
|
|
76
88
|
}
|
|
77
89
|
const result = this.index.searchKnn(query, k);
|
|
78
|
-
return result.neighbors.map((docIndex, resultIndex) => [
|
|
90
|
+
return result.neighbors.map((docIndex, resultIndex) => [
|
|
91
|
+
this.docstore.search(String(docIndex)),
|
|
92
|
+
result.distances[resultIndex],
|
|
93
|
+
]);
|
|
79
94
|
}
|
|
80
95
|
async save(directory) {
|
|
81
96
|
if (!this.index) {
|
|
@@ -102,7 +117,7 @@ class HNSWLib extends base_1.SaveableVectorStore {
|
|
|
102
117
|
]);
|
|
103
118
|
return new HNSWLib(args, embeddings, docstore, index);
|
|
104
119
|
}
|
|
105
|
-
static async fromTexts(texts, metadatas, embeddings) {
|
|
120
|
+
static async fromTexts(texts, metadatas, embeddings, docstore = new docstore_1.InMemoryDocstore()) {
|
|
106
121
|
const docs = [];
|
|
107
122
|
for (let i = 0; i < texts.length; i += 1) {
|
|
108
123
|
const newDoc = new document_1.Document({
|
|
@@ -111,16 +126,16 @@ class HNSWLib extends base_1.SaveableVectorStore {
|
|
|
111
126
|
});
|
|
112
127
|
docs.push(newDoc);
|
|
113
128
|
}
|
|
114
|
-
return HNSWLib.fromDocuments(docs, embeddings);
|
|
129
|
+
return HNSWLib.fromDocuments(docs, embeddings, docstore);
|
|
115
130
|
}
|
|
116
|
-
static async fromDocuments(docs, embeddings) {
|
|
131
|
+
static async fromDocuments(docs, embeddings, docstore = new docstore_1.InMemoryDocstore()) {
|
|
117
132
|
if (HierarchicalNSW === null) {
|
|
118
133
|
throw new Error("Please install hnswlib-node as a dependency with, e.g. `npm install -S hnswlib-node`");
|
|
119
134
|
}
|
|
120
135
|
const args = {
|
|
121
136
|
space: "ip", // dot product
|
|
122
137
|
};
|
|
123
|
-
const instance = new this(args, embeddings,
|
|
138
|
+
const instance = new this(args, embeddings, docstore);
|
|
124
139
|
await instance.addDocuments(docs);
|
|
125
140
|
return instance;
|
|
126
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hnswlib.js","sourceRoot":"","sources":["../../vectorstores/hnswlib.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA6B;AAC7B,gDAAwB;
|
|
1
|
+
{"version":3,"file":"hnswlib.js","sourceRoot":"","sources":["../../vectorstores/hnswlib.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HNSWLib = void 0;
|
|
3
|
+
exports.PineconeStore = exports.HNSWLib = void 0;
|
|
4
4
|
var hnswlib_1 = require("./hnswlib");
|
|
5
5
|
Object.defineProperty(exports, "HNSWLib", { enumerable: true, get: function () { return hnswlib_1.HNSWLib; } });
|
|
6
|
+
var pinecone_1 = require("./pinecone");
|
|
7
|
+
Object.defineProperty(exports, "PineconeStore", { enumerable: true, get: function () { return pinecone_1.PineconeStore; } });
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../vectorstores/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../vectorstores/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,uCAA2C;AAAlC,yGAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PineconeClient } from "pinecone-client";
|
|
2
|
+
import { VectorStore } from "./base";
|
|
3
|
+
import { Embeddings } from "../embeddings/base";
|
|
4
|
+
import { Document } from "../document";
|
|
5
|
+
type PineconeMetadata = Record<string, any>;
|
|
6
|
+
export declare class PineconeStore extends VectorStore {
|
|
7
|
+
textKey: string;
|
|
8
|
+
pineconeClient: PineconeClient<PineconeMetadata>;
|
|
9
|
+
constructor(pineconeClient: PineconeClient<PineconeMetadata>, embeddings: Embeddings, textKey?: string);
|
|
10
|
+
addDocuments(documents: Document[], ids?: string[]): Promise<void>;
|
|
11
|
+
addVectors(vectors: number[][], documents: Document[], ids?: string[]): Promise<void>;
|
|
12
|
+
similaritySearchVectorWithScore(query: number[], k: number): Promise<[Document, number][]>;
|
|
13
|
+
static fromTexts(pineconeClient: PineconeClient<PineconeMetadata>, texts: string[], metadatas: object[], embeddings: Embeddings, textKey?: string): Promise<PineconeStore>;
|
|
14
|
+
static fromDocuments(pineconeClient: PineconeClient<PineconeMetadata>, docs: Document[], embeddings: Embeddings, textKey?: string): Promise<PineconeStore>;
|
|
15
|
+
static fromExistingIndex(pineconeClient: PineconeClient<PineconeMetadata>, embeddings: Embeddings, textKey?: string): Promise<PineconeStore>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PineconeStore = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const base_1 = require("./base");
|
|
6
|
+
const document_1 = require("../document");
|
|
7
|
+
class PineconeStore extends base_1.VectorStore {
|
|
8
|
+
constructor(pineconeClient, embeddings, textKey = "text") {
|
|
9
|
+
super(embeddings);
|
|
10
|
+
Object.defineProperty(this, "textKey", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
writable: true,
|
|
14
|
+
value: void 0
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(this, "pineconeClient", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
configurable: true,
|
|
19
|
+
writable: true,
|
|
20
|
+
value: void 0
|
|
21
|
+
});
|
|
22
|
+
this.pineconeClient = pineconeClient;
|
|
23
|
+
this.embeddings = embeddings;
|
|
24
|
+
this.textKey = textKey;
|
|
25
|
+
}
|
|
26
|
+
async addDocuments(documents, ids) {
|
|
27
|
+
const texts = documents.map(({ pageContent }) => pageContent);
|
|
28
|
+
return this.addVectors(await this.embeddings.embedDocuments(texts), documents, ids);
|
|
29
|
+
}
|
|
30
|
+
async addVectors(vectors, documents, ids) {
|
|
31
|
+
const documentIds = ids == null ? documents.map(() => (0, uuid_1.v4)()) : ids;
|
|
32
|
+
return this.pineconeClient.upsert({
|
|
33
|
+
vectors: vectors.map((values, idx) => ({
|
|
34
|
+
id: documentIds[idx],
|
|
35
|
+
metadata: {
|
|
36
|
+
...documents[idx].metadata,
|
|
37
|
+
[this.textKey]: documents[idx].pageContent,
|
|
38
|
+
},
|
|
39
|
+
values,
|
|
40
|
+
})),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async similaritySearchVectorWithScore(query, k) {
|
|
44
|
+
const results = await this.pineconeClient.query({
|
|
45
|
+
topK: k,
|
|
46
|
+
includeMetadata: true,
|
|
47
|
+
vector: query,
|
|
48
|
+
});
|
|
49
|
+
const result = [];
|
|
50
|
+
for (const res of results.matches) {
|
|
51
|
+
const { [this.textKey]: pageContent, ...metadata } = res.metadata;
|
|
52
|
+
result.push([new document_1.Document({ metadata, pageContent }), res.score]);
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
static async fromTexts(pineconeClient, texts, metadatas, embeddings, textKey = "text") {
|
|
57
|
+
const docs = [];
|
|
58
|
+
for (let i = 0; i < texts.length; i += 1) {
|
|
59
|
+
const newDoc = new document_1.Document({
|
|
60
|
+
pageContent: texts[i],
|
|
61
|
+
metadata: metadatas[i],
|
|
62
|
+
});
|
|
63
|
+
docs.push(newDoc);
|
|
64
|
+
}
|
|
65
|
+
return PineconeStore.fromDocuments(pineconeClient, docs, embeddings, textKey);
|
|
66
|
+
}
|
|
67
|
+
static async fromDocuments(pineconeClient, docs, embeddings, textKey = "text") {
|
|
68
|
+
const instance = new this(pineconeClient, embeddings, textKey);
|
|
69
|
+
await instance.addDocuments(docs);
|
|
70
|
+
return instance;
|
|
71
|
+
}
|
|
72
|
+
static async fromExistingIndex(pineconeClient, embeddings, textKey = "text") {
|
|
73
|
+
const instance = new this(pineconeClient, embeddings, textKey);
|
|
74
|
+
return instance;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.PineconeStore = PineconeStore;
|
|
78
|
+
//# sourceMappingURL=pinecone.js.map
|