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.
Files changed (104) hide show
  1. package/agents.mjs +1 -0
  2. package/chains.mjs +1 -0
  3. package/dist/agents/tests/{agent.test.d.ts → agent.int.test.d.ts} +0 -0
  4. package/dist/agents/tests/{agent.test.js → agent.int.test.js} +2 -3
  5. package/dist/agents/tests/agent.int.test.js.map +1 -0
  6. package/dist/chains/base.d.ts +1 -0
  7. package/dist/chains/base.js +3 -2
  8. package/dist/chains/base.js.map +1 -1
  9. package/dist/chains/index.d.ts +1 -1
  10. package/dist/chains/index.js.map +1 -1
  11. package/dist/chains/llm_chain.d.ts +3 -2
  12. package/dist/chains/llm_chain.js +1 -1
  13. package/dist/chains/llm_chain.js.map +1 -1
  14. package/dist/chains/question_answering/tests/{load.test.d.ts → load.int.test.d.ts} +0 -0
  15. package/dist/chains/question_answering/tests/{load.test.js → load.int.test.js} +1 -1
  16. package/dist/chains/question_answering/tests/load.int.test.js.map +1 -0
  17. package/dist/chains/tests/{chat_vector_db_qa_chain.test.d.ts → chat_vector_db_qa_chain.int.test.d.ts} +0 -0
  18. package/dist/chains/tests/{chat_vector_db_qa_chain.test.js → chat_vector_db_qa_chain.int.test.js} +1 -1
  19. package/dist/chains/tests/chat_vector_db_qa_chain.int.test.js.map +1 -0
  20. package/dist/chains/tests/{combine_docs_chain.test.d.ts → combine_docs_chain.int.test.d.ts} +0 -0
  21. package/dist/chains/tests/{combine_docs_chain.test.js → combine_docs_chain.int.test.js} +1 -1
  22. package/dist/chains/tests/combine_docs_chain.int.test.js.map +1 -0
  23. package/dist/chains/tests/{llm_chain.test.d.ts → llm_chain.int.test.d.ts} +0 -0
  24. package/dist/chains/tests/{llm_chain.test.js → llm_chain.int.test.js} +1 -1
  25. package/dist/chains/tests/llm_chain.int.test.js.map +1 -0
  26. package/dist/chains/tests/{vector_db_qa_chain.test.d.ts → vector_db_qa_chain.int.test.d.ts} +0 -0
  27. package/dist/chains/tests/{vector_db_qa_chain.test.js → vector_db_qa_chain.int.test.js} +1 -1
  28. package/dist/chains/tests/vector_db_qa_chain.int.test.js.map +1 -0
  29. package/dist/docstore/base.d.ts +5 -0
  30. package/dist/docstore/base.js +7 -0
  31. package/dist/docstore/base.js.map +1 -0
  32. package/dist/docstore/in_memory.d.ts +10 -0
  33. package/dist/docstore/in_memory.js +36 -0
  34. package/dist/docstore/in_memory.js.map +1 -0
  35. package/dist/docstore/index.d.ts +3 -0
  36. package/dist/docstore/index.js +10 -0
  37. package/dist/docstore/index.js.map +1 -0
  38. package/dist/embeddings/fake.d.ts +5 -0
  39. package/dist/embeddings/fake.js +14 -0
  40. package/dist/embeddings/fake.js.map +1 -0
  41. package/dist/embeddings/tests/{openai.test.d.ts → openai.int.test.d.ts} +0 -0
  42. package/dist/embeddings/tests/{openai.test.js → openai.int.test.js} +1 -1
  43. package/dist/embeddings/tests/openai.int.test.js.map +1 -0
  44. package/dist/llms/index.d.ts +1 -1
  45. package/dist/llms/index.js +2 -1
  46. package/dist/llms/index.js.map +1 -1
  47. package/dist/llms/openai.d.ts +13 -0
  48. package/dist/llms/openai.js +62 -1
  49. package/dist/llms/openai.js.map +1 -1
  50. package/dist/llms/tests/{cohere.test.d.ts → cohere.int.test.d.ts} +0 -0
  51. package/dist/llms/tests/{cohere.test.js → cohere.int.test.js} +1 -1
  52. package/dist/llms/tests/cohere.int.test.js.map +1 -0
  53. package/dist/llms/tests/{openai.test.d.ts → openai.int.test.d.ts} +0 -0
  54. package/dist/llms/tests/{openai.test.js → openai.int.test.js} +1 -1
  55. package/dist/llms/tests/openai.int.test.js.map +1 -0
  56. package/dist/tests/text_splitter.test.d.ts +1 -0
  57. package/dist/tests/text_splitter.test.js +141 -0
  58. package/dist/tests/text_splitter.test.js.map +1 -0
  59. package/dist/text_splitter.d.ts +17 -0
  60. package/dist/text_splitter.js +69 -1
  61. package/dist/text_splitter.js.map +1 -1
  62. package/dist/util/hub.js +3 -2
  63. package/dist/util/hub.js.map +1 -1
  64. package/dist/vectorstores/base.d.ts +1 -5
  65. package/dist/vectorstores/base.js +2 -11
  66. package/dist/vectorstores/base.js.map +1 -1
  67. package/dist/vectorstores/hnswlib.d.ts +7 -4
  68. package/dist/vectorstores/hnswlib.js +24 -9
  69. package/dist/vectorstores/hnswlib.js.map +1 -1
  70. package/dist/vectorstores/index.d.ts +1 -0
  71. package/dist/vectorstores/index.js +3 -1
  72. package/dist/vectorstores/index.js.map +1 -1
  73. package/dist/vectorstores/pinecone.d.ts +17 -0
  74. package/dist/vectorstores/pinecone.js +78 -0
  75. package/dist/vectorstores/pinecone.js.map +1 -0
  76. package/dist/vectorstores/tests/hnswlib.int.test.d.ts +1 -0
  77. package/dist/vectorstores/tests/hnswlib.int.test.js +61 -0
  78. package/dist/vectorstores/tests/hnswlib.int.test.js.map +1 -0
  79. package/dist/vectorstores/tests/hnswlib.test.js +29 -38
  80. package/dist/vectorstores/tests/hnswlib.test.js.map +1 -1
  81. package/docstore.d.ts +1 -0
  82. package/docstore.js +1 -0
  83. package/docstore.mjs +1 -0
  84. package/document.mjs +1 -0
  85. package/embeddings.mjs +1 -0
  86. package/index.d.ts +1 -0
  87. package/index.js +1 -0
  88. package/index.mjs +1 -0
  89. package/llms.mjs +1 -0
  90. package/memory.mjs +1 -0
  91. package/package.json +110 -8
  92. package/prompts.mjs +1 -0
  93. package/text_splitter.mjs +1 -0
  94. package/tools.mjs +1 -0
  95. package/vectorstores.mjs +1 -0
  96. package/dist/agents/tests/agent.test.js.map +0 -1
  97. package/dist/chains/question_answering/tests/load.test.js.map +0 -1
  98. package/dist/chains/tests/chat_vector_db_qa_chain.test.js.map +0 -1
  99. package/dist/chains/tests/combine_docs_chain.test.js.map +0 -1
  100. package/dist/chains/tests/llm_chain.test.js.map +0 -1
  101. package/dist/chains/tests/vector_db_qa_chain.test.js.map +0 -1
  102. package/dist/embeddings/tests/openai.test.js.map +0 -1
  103. package/dist/llms/tests/cohere.test.js.map +0 -1
  104. 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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"}
@@ -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 {};
@@ -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":"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"}
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(path_1.default.sep);
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
  };
@@ -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;AAIxD,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,cAAI,CAAC,GAAG,CAAC,CAAC;IACzC,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,CAAC,MAAM,EAAE,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC;AAjCW,QAAA,WAAW,eAiCtB"}
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
- docstore: DocStore;
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
- Object.defineProperty(this, "docstore", {
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":";;;AAQA,MAAsB,WAAW;IAAjC;QACE;;;;;WAAuB;QAEvB;;;;;WAAmB;IAmCrB,CAAC;IAvBC,KAAK,CAAC,YAAY,CAAC,SAAqB;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;IAED,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;AAtCD,kCAsCC;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
+ {"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 { DocStore, SaveableVectorStore } from "./base";
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: DocStore, index?: HierarchicalNSWT);
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 - capacity);
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] = documents[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) => [this.docstore[docIndex], result.distances[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":"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"}
1
+ {"version":3,"file":"hnswlib.js","sourceRoot":"","sources":["../../vectorstores/hnswlib.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export { HNSWLib } from "./hnswlib";
2
+ export { PineconeStore } from "./pinecone";
@@ -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