mirror of
https://github.com/run-llama/LlamaIndexTS.git
synced 2026-07-01 22:14:03 -04:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 335020e242 | |||
| 3d1808b5d2 | |||
| a19cbc7fe0 | |||
| b8f0cbc4e0 | |||
| 7e8230b056 | |||
| 8be45899a7 | |||
| c4800bcf82 | |||
| fd38a253b7 | |||
| 510191cb5d | |||
| 7934ade092 | |||
| a6c1eab762 | |||
| 515f2c1e3d | |||
| dc85649ead | |||
| d2b2722a30 | |||
| a2bbd62399 | |||
| 969365ca0a | |||
| 819af453d6 | |||
| 9db36f7384 | |||
| efa221116f | |||
| 83c3897539 | |||
| e1cbce1f80 | |||
| 02b22da384 |
@@ -1,5 +1,62 @@
|
||||
# docs
|
||||
|
||||
## 0.0.132
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
- @llamaindex/examples@0.0.19
|
||||
|
||||
## 0.0.131
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
- @llamaindex/examples@0.0.18
|
||||
|
||||
## 0.0.130
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [fd38a25]
|
||||
- @llamaindex/examples@0.0.17
|
||||
|
||||
## 0.0.129
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.128
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.127
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
|
||||
## 0.0.126
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
|
||||
## 0.0.125
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
|
||||
## 0.0.124
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "docs",
|
||||
"version": "0.0.124",
|
||||
"version": "0.0.132",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
|
||||
@@ -1,5 +1,82 @@
|
||||
# @llamaindex/doc
|
||||
|
||||
## 0.0.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- llamaindex@0.8.26
|
||||
- @llamaindex/openai@0.1.42
|
||||
- @llamaindex/cloud@2.0.17
|
||||
- @llamaindex/node-parser@0.0.18
|
||||
- @llamaindex/readers@1.0.19
|
||||
|
||||
## 0.0.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [7e8230b]
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/readers@1.0.18
|
||||
- @llamaindex/cloud@2.0.16
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/node-parser@0.0.17
|
||||
- @llamaindex/openai@0.1.41
|
||||
- @llamaindex/workflow@0.0.7
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.28
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- fd38a25: Add vercel tool adapter to use query engine tool
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@2.0.15
|
||||
- @llamaindex/core@0.4.15
|
||||
- llamaindex@0.8.23
|
||||
- @llamaindex/node-parser@0.0.16
|
||||
- @llamaindex/openai@0.1.40
|
||||
- @llamaindex/readers@1.0.17
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
- @llamaindex/cloud@2.0.14
|
||||
- @llamaindex/core@0.4.14
|
||||
- @llamaindex/node-parser@0.0.15
|
||||
- @llamaindex/openai@0.1.39
|
||||
- @llamaindex/readers@1.0.16
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
|
||||
## 0.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/doc",
|
||||
"version": "0.0.22",
|
||||
"version": "0.0.30",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "pnpm run build:docs && next build",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"title": "Integration",
|
||||
"description": "See our integrations",
|
||||
"pages": ["open-llm-metry", "lang-trace"]
|
||||
"pages": ["open-llm-metry", "lang-trace", "vercel"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: Vercel
|
||||
description: Integrate LlamaIndex with Vercel's AI SDK
|
||||
---
|
||||
|
||||
LlamaIndex provides integration with Vercel's AI SDK, allowing you to create powerful search and retrieval applications. Below are examples of how to use LlamaIndex with `streamText` from the Vercel AI SDK.
|
||||
|
||||
## Setup
|
||||
|
||||
First, install the required dependencies:
|
||||
|
||||
```bash
|
||||
npm install @llamaindex/vercel ai
|
||||
```
|
||||
|
||||
## Using Local Vector Store
|
||||
|
||||
Here's how to create a simple vector store index and query it using Vercel's AI SDK:
|
||||
|
||||
```typescript
|
||||
import { openai } from "@ai-sdk/openai";
|
||||
import { llamaindex } from "@llamaindex/vercel";
|
||||
import { streamText } from "ai";
|
||||
import { Document, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
// Create an index from your documents
|
||||
const document = new Document({ text: yourText, id_: "unique-id" });
|
||||
const index = await VectorStoreIndex.fromDocuments([document]);
|
||||
|
||||
// Create a query tool
|
||||
const queryTool = llamaindex({
|
||||
index,
|
||||
description: "Search through the documents", // optional
|
||||
});
|
||||
|
||||
// Use the tool with Vercel's AI SDK
|
||||
streamText({
|
||||
tools: { queryTool },
|
||||
prompt: "Your question here",
|
||||
model: openai("gpt-4"),
|
||||
onFinish({ response }) {
|
||||
console.log("Response:", response.messages); // log the response
|
||||
},
|
||||
}).toDataStream();
|
||||
```
|
||||
|
||||
## Using LlamaCloud
|
||||
|
||||
For production deployments, you can use LlamaCloud to store and manage your documents:
|
||||
|
||||
```typescript
|
||||
import { LlamaCloudIndex } from "llamaindex";
|
||||
|
||||
// Create a LlamaCloud index
|
||||
const index = await LlamaCloudIndex.fromDocuments({
|
||||
documents: [document],
|
||||
name: "your-index-name",
|
||||
projectName: "your-project",
|
||||
apiKey: process.env.LLAMA_CLOUD_API_KEY,
|
||||
});
|
||||
|
||||
// Use it the same way as VectorStoreIndex
|
||||
const queryTool = llamaindex({
|
||||
index,
|
||||
description: "Search through the documents",
|
||||
});
|
||||
|
||||
// Use the tool with Vercel's AI SDK
|
||||
streamText({
|
||||
tools: { queryTool },
|
||||
prompt: "Your question here",
|
||||
model: openai("gpt-4"),
|
||||
}).toDataStream();
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Explore [LlamaCloud](https://cloud.llamaindex.ai/) for managed document storage and retrieval
|
||||
2. Join our [Discord community](https://discord.gg/llamaindex) for support and discussions
|
||||
|
||||
@@ -37,6 +37,33 @@ Then, you need create `.dev.vars` and add LLM api keys for the local development
|
||||
|
||||
<Callout type="warn">Do not commit the api key to git repository.</Callout>
|
||||
|
||||
## Integrating with Hono
|
||||
|
||||
```ts
|
||||
import { Hono } from "hono";
|
||||
|
||||
type Bindings = {
|
||||
OPENAI_API_KEY: string;
|
||||
};
|
||||
|
||||
const app = new Hono<{
|
||||
Bindings: Bindings;
|
||||
}>();
|
||||
|
||||
app.post("/llm", async (c) => {
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(c.env);
|
||||
|
||||
// ...
|
||||
|
||||
return new Response('Hello, world!');
|
||||
})
|
||||
|
||||
export default {
|
||||
fetch: app.fetch,
|
||||
};
|
||||
```
|
||||
|
||||
## Difference between Node.js and Cloudflare Worker
|
||||
|
||||
In Cloudflare Worker and similar serverless JS environment, you need to be aware of the following differences:
|
||||
@@ -46,3 +73,7 @@ In Cloudflare Worker and similar serverless JS environment, you need to be aware
|
||||
- Some of LlamaIndex.TS modules are not available in Cloudflare Worker, for example `SimpleDirectoryReader` (requires `node:fs`), Some multimodal API that relies on [`onnxruntime-node`](https://www.npmjs.com/package/onnxruntime-node)(we might port to HTTP based module in the future).
|
||||
- `@llamaindex/core` is designed to work in all JavaScript environment, including Cloudflare Worker. If you find any issue, please report to us.
|
||||
- `@llamaindex/env` is a JS environment binding module, which polyfill some Node.js/Modern Web API (for example, we have a memory based `fs` module, and Crypto API polyfill). It is designed to work in all JavaScript environment, including Cloudflare Worker.
|
||||
|
||||
## Known issues
|
||||
|
||||
- `llamaindex` not work perfectly in Cloudflare Worker, bundle size will be larger than 1MB, which is the limit of Cloudflare Worker. You will need import submodule instead of the whole `llamaindex` module.
|
||||
|
||||
@@ -1 +1,4 @@
|
||||
POSTGRES_USER=runner
|
||||
PINECONE_API_KEY=
|
||||
PINECONE_INDEX_NAME=
|
||||
PINECONE_NAMESPACE=
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
# Logs
|
||||
|
||||
logs
|
||||
_.log
|
||||
npm-debug.log_
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
|
||||
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
|
||||
|
||||
# Runtime data
|
||||
|
||||
pids
|
||||
_.pid
|
||||
_.seed
|
||||
\*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
|
||||
coverage
|
||||
\*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
|
||||
\*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
|
||||
.eslintcache
|
||||
|
||||
# Optional stylelint cache
|
||||
|
||||
.stylelintcache
|
||||
|
||||
# Microbundle cache
|
||||
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
|
||||
\*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variable files
|
||||
|
||||
.env
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
|
||||
.cache/
|
||||
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
|
||||
.vuepress/dist
|
||||
|
||||
# vuepress v2.x temp and cache directory
|
||||
|
||||
.temp
|
||||
.cache
|
||||
|
||||
# Docusaurus cache and generated files
|
||||
|
||||
.docusaurus
|
||||
|
||||
# Serverless directories
|
||||
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.\*
|
||||
|
||||
# wrangler project
|
||||
|
||||
.dev.vars
|
||||
.wrangler/
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "@llamaindex/cloudflare-hono",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"deploy": "wrangler deploy",
|
||||
"build": "wrangler deploy --dry-run --outdir dist",
|
||||
"dev": "wrangler dev",
|
||||
"start": "wrangler dev",
|
||||
"cf-typegen": "wrangler types"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@cloudflare/workers-types": "^4.20241112.0",
|
||||
"typescript": "^5.5.2",
|
||||
"wrangler": "^3.89.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"hono": "^4.6.11"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
import { Hono } from "hono";
|
||||
|
||||
type Bindings = {
|
||||
OPENAI_API_KEY: string;
|
||||
PINECONE_API_KEY: string;
|
||||
};
|
||||
|
||||
const app = new Hono<{
|
||||
Bindings: Bindings;
|
||||
}>();
|
||||
|
||||
app.post("/llm", async (c) => {
|
||||
//#region init envs
|
||||
const { setEnvs } = await import("@llamaindex/env");
|
||||
setEnvs(c.env);
|
||||
//#endregion
|
||||
|
||||
const { message } = await c.req.json();
|
||||
|
||||
const { extractText } = await import("@llamaindex/core/utils");
|
||||
|
||||
const {
|
||||
QueryEngineTool,
|
||||
serviceContextFromDefaults,
|
||||
VectorStoreIndex,
|
||||
OpenAIAgent,
|
||||
Settings,
|
||||
OpenAI,
|
||||
OpenAIEmbedding,
|
||||
} = await import("llamaindex");
|
||||
|
||||
const { PineconeVectorStore } = await import(
|
||||
"llamaindex/vector-store/PineconeVectorStore"
|
||||
);
|
||||
|
||||
const llm = new OpenAI({
|
||||
model: "gpt-4o-mini",
|
||||
apiKey: c.env.OPENAI_API_KEY,
|
||||
});
|
||||
|
||||
Settings.embedModel = new OpenAIEmbedding({
|
||||
model: "text-embedding-3-small",
|
||||
apiKey: c.env.OPENAI_API_KEY,
|
||||
});
|
||||
|
||||
const serviceContext = serviceContextFromDefaults({
|
||||
llm,
|
||||
chunkSize: 8191,
|
||||
chunkOverlap: 0,
|
||||
});
|
||||
|
||||
const store = new PineconeVectorStore({
|
||||
namespace: "8xolsn4ulEQGdhnhP76yCzfLHdOZ",
|
||||
});
|
||||
|
||||
const index = await VectorStoreIndex.fromVectorStore(store, serviceContext);
|
||||
|
||||
const retriever = index.asRetriever({
|
||||
similarityTopK: 3,
|
||||
});
|
||||
|
||||
// Create a query engine
|
||||
const queryEngine = index.asQueryEngine({
|
||||
retriever,
|
||||
});
|
||||
|
||||
const tools = [
|
||||
new QueryEngineTool({
|
||||
queryEngine: queryEngine,
|
||||
metadata: {
|
||||
name: "business_info_tool",
|
||||
description:
|
||||
"This tool can answer questions based " +
|
||||
"on business information. Return not found if you" +
|
||||
" can't find the answer in the documents.",
|
||||
},
|
||||
}),
|
||||
];
|
||||
|
||||
const agent = new OpenAIAgent({ tools });
|
||||
|
||||
const response = await agent.chat({
|
||||
message: message,
|
||||
});
|
||||
|
||||
return new Response(extractText(response.message.content));
|
||||
});
|
||||
|
||||
export default {
|
||||
fetch: app.fetch,
|
||||
};
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
||||
|
||||
/* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
||||
"target": "es2021",
|
||||
/* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
||||
"lib": ["es2021", "DOM.AsyncIterable"],
|
||||
/* Specify what JSX code is generated. */
|
||||
"jsx": "react-jsx",
|
||||
/* Specify what module code is generated. */
|
||||
"module": "es2022",
|
||||
/* Specify how TypeScript looks up a file from a given module specifier. */
|
||||
"moduleResolution": "Bundler",
|
||||
/* Specify type package names to be included without being referenced in a source file. */
|
||||
"types": ["@cloudflare/workers-types/2023-07-01"],
|
||||
/* Enable importing .json files */
|
||||
"resolveJsonModule": true,
|
||||
/* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
|
||||
"allowJs": true,
|
||||
/* Enable error reporting in type-checked JavaScript files. */
|
||||
"checkJs": false,
|
||||
/* Disable emitting files from a compilation. */
|
||||
"noEmit": true,
|
||||
/* Ensure that each file can be safely transpiled without relying on other imports. */
|
||||
"isolatedModules": true,
|
||||
/* Allow 'import x from y' when a module doesn't have a default export. */
|
||||
"allowSyntheticDefaultImports": true,
|
||||
/* Ensure that casing is correct in imports. */
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
/* Enable all strict type-checking options. */
|
||||
"strict": true,
|
||||
/* Skip type checking all .d.ts files. */
|
||||
"skipLibCheck": true
|
||||
},
|
||||
"exclude": ["test"],
|
||||
"include": ["vitest.config.mts", "worker-configuration.d.ts", "src/**/*.ts"]
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
// Generated by Wrangler by running `wrangler types`
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
||||
interface Env {}
|
||||
@@ -0,0 +1,7 @@
|
||||
name = "llamaindex-cloudflare-hono-example"
|
||||
main = "src/index.ts"
|
||||
compatibility_date = "2024-11-12"
|
||||
compatibility_flags = ["nodejs_als"]
|
||||
|
||||
[observability]
|
||||
enabled = true
|
||||
@@ -1,5 +1,53 @@
|
||||
# @llamaindex/cloudflare-worker-agent-test
|
||||
|
||||
## 0.0.122
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.121
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.120
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.119
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.118
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
|
||||
## 0.0.117
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
|
||||
## 0.0.116
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
|
||||
## 0.0.115
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloudflare-worker-agent-test",
|
||||
"version": "0.0.115",
|
||||
"version": "0.0.122",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# @llamaindex/llama-parse-browser-test
|
||||
|
||||
## 0.0.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@2.0.17
|
||||
|
||||
## 0.0.36
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/cloud@2.0.16
|
||||
|
||||
## 0.0.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@2.0.15
|
||||
|
||||
## 0.0.34
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@2.0.14
|
||||
|
||||
## 0.0.33
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/llama-parse-browser-test",
|
||||
"private": true,
|
||||
"version": "0.0.33",
|
||||
"version": "0.0.37",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -1,5 +1,53 @@
|
||||
# @llamaindex/next-agent-test
|
||||
|
||||
## 0.1.122
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.1.121
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.1.120
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.1.119
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.1.118
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
|
||||
## 0.1.117
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
|
||||
## 0.1.116
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
|
||||
## 0.1.115
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-agent-test",
|
||||
"version": "0.1.115",
|
||||
"version": "0.1.122",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,53 @@
|
||||
# test-edge-runtime
|
||||
|
||||
## 0.1.121
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.1.120
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.1.119
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.1.118
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.1.117
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
|
||||
## 0.1.116
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
|
||||
## 0.1.115
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
|
||||
## 0.1.114
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/nextjs-edge-runtime-test",
|
||||
"version": "0.1.114",
|
||||
"version": "0.1.121",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,53 @@
|
||||
# @llamaindex/next-node-runtime
|
||||
|
||||
## 0.0.103
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.102
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.101
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.100
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.99
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
|
||||
## 0.0.98
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
|
||||
## 0.0.97
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
|
||||
## 0.0.96
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-node-runtime-test",
|
||||
"version": "0.0.96",
|
||||
"version": "0.0.103",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,53 @@
|
||||
# @llamaindex/waku-query-engine-test
|
||||
|
||||
## 0.0.122
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.121
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.120
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.119
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.118
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
|
||||
## 0.0.117
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
|
||||
## 0.0.116
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
|
||||
## 0.0.115
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/waku-query-engine-test",
|
||||
"version": "0.0.115",
|
||||
"version": "0.0.122",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
import { Document, MetadataMode } from "@llamaindex/core/schema";
|
||||
import { config } from "dotenv";
|
||||
import {
|
||||
OpenAIEmbedding,
|
||||
PineconeVectorStore,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
import assert from "node:assert";
|
||||
import { test } from "node:test";
|
||||
|
||||
config({ path: [".env.local", ".env", ".env.ci"] });
|
||||
|
||||
await test("pinecone", async (t) => {
|
||||
if (
|
||||
!process.env.PINECONE_API_KEY ||
|
||||
!process.env.PINECONE_NAMESPACE ||
|
||||
!process.env.PINECONE_INDEX_NAME
|
||||
) {
|
||||
return t.skip(
|
||||
"PINECONE_API_KEY, PINECONE_NAMESPACE, and PINECONE_INDEX_NAME must be set to run this test",
|
||||
);
|
||||
}
|
||||
const openaiEmbedding = new OpenAIEmbedding({
|
||||
model: "text-embedding-3-large",
|
||||
});
|
||||
|
||||
const vectorStore = new PineconeVectorStore({
|
||||
embeddingModel: openaiEmbedding,
|
||||
});
|
||||
|
||||
t.after(async () => {
|
||||
await vectorStore.clearIndex();
|
||||
});
|
||||
|
||||
const index = await VectorStoreIndex.fromVectorStore(vectorStore);
|
||||
|
||||
const retriever = index.asRetriever({
|
||||
similarityTopK: 3,
|
||||
});
|
||||
const text = "We are open from 9am to 5pm";
|
||||
|
||||
await vectorStore.add([
|
||||
new Document({
|
||||
text,
|
||||
embedding: await openaiEmbedding.getTextEmbedding(text),
|
||||
}),
|
||||
]);
|
||||
|
||||
const results = await retriever.retrieve({
|
||||
query: "When are you open?",
|
||||
});
|
||||
results.every((result) => {
|
||||
assert.ok(result.node.embedding instanceof Array);
|
||||
result.node.embedding.every((embedding, idx) =>
|
||||
assert.ok(
|
||||
typeof embedding === "number",
|
||||
`Embedding at index ${idx} should be a number`,
|
||||
),
|
||||
);
|
||||
assert.ok(typeof result.score === "number", "Score should be a number");
|
||||
assert.ok(
|
||||
result.node.getContent(MetadataMode.NONE).length > 0,
|
||||
"Content should not be empty",
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,35 @@
|
||||
# examples
|
||||
|
||||
## 0.0.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- llamaindex@0.8.26
|
||||
- @llamaindex/vercel@0.0.4
|
||||
- @llamaindex/readers@1.0.19
|
||||
|
||||
## 0.0.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [7e8230b]
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/readers@1.0.18
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/vercel@0.0.3
|
||||
- @llamaindex/workflow@0.0.7
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- fd38a25: Add vercel tool adapter to use query engine tool
|
||||
- Updated dependencies [fd38a25]
|
||||
- @llamaindex/vercel@0.0.2
|
||||
|
||||
## 0.0.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,24 +1,27 @@
|
||||
{
|
||||
"name": "@llamaindex/examples",
|
||||
"private": true,
|
||||
"version": "0.0.16",
|
||||
"version": "0.0.19",
|
||||
"dependencies": {
|
||||
"@ai-sdk/openai": "^1.0.5",
|
||||
"@aws-crypto/sha256-js": "^5.2.0",
|
||||
"@azure/cosmos": "^4.1.1",
|
||||
"@azure/identity": "^4.4.1",
|
||||
"@datastax/astra-db-ts": "^1.4.1",
|
||||
"@llamaindex/core": "^0.4.10",
|
||||
"@llamaindex/readers": "^1.0.11",
|
||||
"@llamaindex/workflow": "^0.0.6",
|
||||
"@llamaindex/core": "^0.4.17",
|
||||
"@llamaindex/readers": "^1.0.19",
|
||||
"@llamaindex/workflow": "^0.0.7",
|
||||
"@llamaindex/vercel": "^0.0.4",
|
||||
"@notionhq/client": "^2.2.15",
|
||||
"@pinecone-database/pinecone": "^4.0.0",
|
||||
"@vercel/postgres": "^0.10.0",
|
||||
"@zilliz/milvus2-sdk-node": "^2.4.6",
|
||||
"ai": "^4.0.0",
|
||||
"chromadb": "^1.8.1",
|
||||
"commander": "^12.1.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"js-tiktoken": "^1.0.14",
|
||||
"llamaindex": "^0.8.13",
|
||||
"llamaindex": "^0.8.26",
|
||||
"mongodb": "^6.7.0",
|
||||
"pathe": "^1.1.2",
|
||||
"postgres": "^3.4.4"
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"start:llamaparse-dir": "node --import tsx ./src/simple-directory-reader-with-llamaparse.ts",
|
||||
"start:llamaparse-json": "node --import tsx ./src/llamaparse-json.ts",
|
||||
"start:discord": "node --import tsx ./src/discord.ts",
|
||||
"start:json": "node --import tsx ./src/json.ts"
|
||||
"start:json": "node --import tsx ./src/json.ts",
|
||||
"start:obsidian": "node --import tsx ./src/obsidian.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@llamaindex/readers": "*",
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import { ObsidianReader } from "@llamaindex/readers/obsidian";
|
||||
|
||||
const obsidianReader = new ObsidianReader(
|
||||
"/Users/jingyi/Documents/jingyi-vault",
|
||||
);
|
||||
|
||||
obsidianReader.loadData().then((documents) => {
|
||||
console.log("documents:", documents.length);
|
||||
documents.forEach((doc) => {
|
||||
console.log(`document (${doc.id_}):`, doc.getText());
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,50 @@
|
||||
# Vercel Examples
|
||||
|
||||
These examples demonstrate how to integrate LlamaIndexTS with Vercel's AI SDK. The examples show how to use LlamaIndex for search and retrieval in both local vector store and LlamaCloud environments.
|
||||
|
||||
## Setup
|
||||
|
||||
To run these examples, first install the required dependencies from the parent folder `examples`:
|
||||
|
||||
```bash
|
||||
npm i
|
||||
```
|
||||
|
||||
## Running the Examples
|
||||
|
||||
Make sure to run the examples from the parent folder called `examples`. The following examples are available:
|
||||
|
||||
### Vector Store Example
|
||||
|
||||
Run the local vector store example with:
|
||||
|
||||
```bash
|
||||
npx tsx vercel/vector-store.ts
|
||||
```
|
||||
|
||||
This example demonstrates:
|
||||
|
||||
- Creating a vector store index from one document
|
||||
- Using Vercel's AI SDK with LlamaIndex for streaming responses
|
||||
|
||||
### LlamaCloud Example
|
||||
|
||||
To run the LlamaCloud example:
|
||||
|
||||
```bash
|
||||
npx tsx vercel/llamacloud.ts
|
||||
```
|
||||
|
||||
This example requires a LlamaCloud API key set in your environment and an embedding model set in the `EMBEDDING_MODEL` environment variable:
|
||||
|
||||
```bash
|
||||
export LLAMA_CLOUD_API_KEY=your_api_key_here
|
||||
export EMBEDDING_MODEL="text-embedding-3-small"
|
||||
```
|
||||
|
||||
The example demonstrates:
|
||||
|
||||
- Creating a LlamaCloud index from one document
|
||||
- Streaming responses using Vercel's AI SDK
|
||||
|
||||
For more detailed information about the Vercel integration, check out [the documentation](https://ts.llamaindex.ai/docs/llamaindex/integration/vercel).
|
||||
@@ -0,0 +1,38 @@
|
||||
import { openai } from "@ai-sdk/openai";
|
||||
import { llamaindex } from "@llamaindex/vercel";
|
||||
import { streamText } from "ai";
|
||||
import { Document, LlamaCloudIndex } from "llamaindex";
|
||||
import fs from "node:fs/promises";
|
||||
|
||||
async function main() {
|
||||
const path = "node_modules/llamaindex/examples/abramov.txt";
|
||||
const essay = await fs.readFile(path, "utf-8");
|
||||
const document = new Document({ text: essay, id_: path });
|
||||
|
||||
const index = await LlamaCloudIndex.fromDocuments({
|
||||
documents: [document],
|
||||
name: "test-pipeline",
|
||||
projectName: "Default",
|
||||
apiKey: process.env.LLAMA_CLOUD_API_KEY,
|
||||
});
|
||||
console.log("Successfully created index");
|
||||
|
||||
const result = streamText({
|
||||
model: openai("gpt-4o"),
|
||||
prompt: "Cost of moving cat from Russia to UK?",
|
||||
tools: {
|
||||
queryTool: llamaindex({
|
||||
index,
|
||||
description:
|
||||
"get information from your knowledge base to answer questions.", // optional description
|
||||
}),
|
||||
},
|
||||
maxSteps: 5,
|
||||
});
|
||||
|
||||
for await (const textPart of result.textStream) {
|
||||
process.stdout.write(textPart);
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -0,0 +1,34 @@
|
||||
import { openai } from "@ai-sdk/openai";
|
||||
import { llamaindex } from "@llamaindex/vercel";
|
||||
import { streamText } from "ai";
|
||||
import { Document, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
import fs from "node:fs/promises";
|
||||
|
||||
async function main() {
|
||||
const path = "node_modules/llamaindex/examples/abramov.txt";
|
||||
const essay = await fs.readFile(path, "utf-8");
|
||||
const document = new Document({ text: essay, id_: path });
|
||||
|
||||
const index = await VectorStoreIndex.fromDocuments([document]);
|
||||
console.log("Successfully created index");
|
||||
|
||||
const result = streamText({
|
||||
model: openai("gpt-4o"),
|
||||
prompt: "Cost of moving cat from Russia to UK?",
|
||||
tools: {
|
||||
queryTool: llamaindex({
|
||||
index,
|
||||
description:
|
||||
"get information from your knowledge base to answer questions.", // optional description
|
||||
}),
|
||||
},
|
||||
maxSteps: 5,
|
||||
});
|
||||
|
||||
for await (const textPart of result.textStream) {
|
||||
process.stdout.write(textPart);
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
+2
-2
@@ -2,8 +2,8 @@
|
||||
"name": "@llamaindex/monorepo",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "turbo run build --filter=\"./packages/*\"",
|
||||
"dev": "turbo run dev --filter=\"./packages/*\"",
|
||||
"build": "turbo run build --filter=\"./packages/*\" --filter=\"./packages/providers/*\"",
|
||||
"dev": "turbo run dev --filter=\"./packages/*\" --filter=\"./packages/providers/*\"",
|
||||
"format": "prettier --ignore-unknown --cache --check .",
|
||||
"format:write": "prettier --ignore-unknown --write .",
|
||||
"lint": "turbo run lint",
|
||||
|
||||
@@ -1,5 +1,55 @@
|
||||
# @llamaindex/autotool
|
||||
|
||||
## 5.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 3d1808b: chore: bump version
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 5.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 5.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 5.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 5.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
|
||||
## 5.0.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
|
||||
## 5.0.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
|
||||
## 5.0.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,5 +1,61 @@
|
||||
# @llamaindex/autotool-01-node-example
|
||||
|
||||
## 0.0.69
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/autotool@5.0.26
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.68
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/autotool@5.0.25
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.67
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
- @llamaindex/autotool@5.0.24
|
||||
|
||||
## 0.0.66
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
- @llamaindex/autotool@5.0.23
|
||||
|
||||
## 0.0.65
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
- @llamaindex/autotool@5.0.22
|
||||
|
||||
## 0.0.64
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
- @llamaindex/autotool@5.0.21
|
||||
|
||||
## 0.0.63
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
- @llamaindex/autotool@5.0.20
|
||||
|
||||
## 0.0.62
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"dependencies": {
|
||||
"@llamaindex/autotool": "workspace:*",
|
||||
"llamaindex": "workspace:*",
|
||||
"openai": "^4.72.0"
|
||||
"openai": "^4.73.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tsx": "^4.19.0"
|
||||
@@ -13,5 +13,5 @@
|
||||
"scripts": {
|
||||
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
|
||||
},
|
||||
"version": "0.0.62"
|
||||
"version": "0.0.69"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,61 @@
|
||||
# @llamaindex/autotool-02-next-example
|
||||
|
||||
## 0.1.113
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/autotool@5.0.26
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.1.112
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/autotool@5.0.25
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.1.111
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
- @llamaindex/autotool@5.0.24
|
||||
|
||||
## 0.1.110
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
- @llamaindex/autotool@5.0.23
|
||||
|
||||
## 0.1.109
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
- @llamaindex/autotool@5.0.22
|
||||
|
||||
## 0.1.108
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
- @llamaindex/autotool@5.0.21
|
||||
|
||||
## 0.1.107
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
- @llamaindex/autotool@5.0.20
|
||||
|
||||
## 0.1.106
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/autotool-02-next-example",
|
||||
"private": true,
|
||||
"version": "0.1.106",
|
||||
"version": "0.1.113",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/autotool",
|
||||
"type": "module",
|
||||
"version": "5.0.19",
|
||||
"version": "5.0.26",
|
||||
"description": "auto transpile your JS function to LLM Agent compatible",
|
||||
"files": [
|
||||
"dist",
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# @llamaindex/cloud
|
||||
|
||||
## 2.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 2.0.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 2.0.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 2.0.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
|
||||
## 2.0.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloud",
|
||||
"version": "2.0.13",
|
||||
"version": "2.0.17",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# @llamaindex/community
|
||||
|
||||
## 0.0.75
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.74
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.73
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.72
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
|
||||
## 0.0.71
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/community",
|
||||
"description": "Community package for LlamaIndexTS",
|
||||
"version": "0.0.71",
|
||||
"version": "0.0.75",
|
||||
"type": "module",
|
||||
"types": "dist/type/index.d.ts",
|
||||
"main": "dist/cjs/index.js",
|
||||
|
||||
@@ -1,5 +1,33 @@
|
||||
# @llamaindex/core
|
||||
|
||||
## 0.4.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 3d1808b: chore: bump version
|
||||
|
||||
## 0.4.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.4.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
|
||||
## 0.4.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
|
||||
## 0.4.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/core",
|
||||
"type": "module",
|
||||
"version": "0.4.13",
|
||||
"version": "0.4.17",
|
||||
"description": "LlamaIndex Core Module",
|
||||
"exports": {
|
||||
"./agent": {
|
||||
|
||||
@@ -369,7 +369,9 @@ export abstract class AgentRunner<
|
||||
verbose: boolean | undefined = undefined,
|
||||
chatHistory?: ChatMessage<AdditionalMessageOptions>[],
|
||||
additionalChatOptions?: AdditionalChatOptions,
|
||||
) {
|
||||
): ReadableStream<
|
||||
TaskStepOutput<AI, Store, AdditionalMessageOptions, AdditionalChatOptions>
|
||||
> {
|
||||
const initialMessages = [...(chatHistory ?? this.#chatHistory)];
|
||||
if (this.#systemPrompt !== null) {
|
||||
const systemPrompt = this.#systemPrompt;
|
||||
@@ -453,14 +455,9 @@ export abstract class AgentRunner<
|
||||
const { output } = stepOutput;
|
||||
if (output instanceof ReadableStream) {
|
||||
return output.pipeThrough(
|
||||
new TransformStream<EngineResponse>({
|
||||
new TransformStream({
|
||||
transform(chunk, controller) {
|
||||
controller.enqueue(
|
||||
EngineResponse.fromChatResponseChunk(
|
||||
chunk,
|
||||
chunk.sourceNodes,
|
||||
),
|
||||
);
|
||||
controller.enqueue(EngineResponse.fromChatResponseChunk(chunk));
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
Vendored
+18
@@ -1,5 +1,23 @@
|
||||
# @llamaindex/env
|
||||
|
||||
## 0.1.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
|
||||
## 0.1.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- d2b2722: fix: switch tokenizer in cloudflare
|
||||
|
||||
## 0.1.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 969365c: fix: async local storage on cloudflare worker
|
||||
|
||||
## 0.1.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/env",
|
||||
"description": "environment wrapper, supports all JS environment including node, deno, bun, edge runtime, and cloudflare worker",
|
||||
"version": "0.1.21",
|
||||
"version": "0.1.24",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"module": "dist/index.js",
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
export { AsyncLocalStorage } from "node:async_hooks";
|
||||
Vendored
+1
-1
@@ -7,7 +7,7 @@
|
||||
*/
|
||||
import { INTERNAL_ENV } from "./utils/index.js";
|
||||
|
||||
export * from "./als/index.non-node.js";
|
||||
export * from "./als/index.workerd.js";
|
||||
export { NotSupportCurrentRuntimeClass } from "./utils/shared.js";
|
||||
|
||||
export * from "./node-polyfill.js";
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@ export {
|
||||
Tokenizers,
|
||||
tokenizers,
|
||||
type Tokenizer,
|
||||
} from "./internal/tokenizers/js.js";
|
||||
} from "./internal/tokenizers/node.js";
|
||||
|
||||
@@ -1,5 +1,54 @@
|
||||
# @llamaindex/experimental
|
||||
|
||||
## 0.0.138
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- llamaindex@0.8.26
|
||||
|
||||
## 0.0.137
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- llamaindex@0.8.25
|
||||
|
||||
## 0.0.136
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [515f2c1]
|
||||
- llamaindex@0.8.24
|
||||
|
||||
## 0.0.135
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- llamaindex@0.8.23
|
||||
|
||||
## 0.0.134
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [819af45]
|
||||
- llamaindex@0.8.22
|
||||
|
||||
## 0.0.133
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [83c3897]
|
||||
- Updated dependencies [efa2211]
|
||||
- llamaindex@0.8.21
|
||||
|
||||
## 0.0.132
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [02b22da]
|
||||
- llamaindex@0.8.20
|
||||
|
||||
## 0.0.131
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/experimental",
|
||||
"description": "Experimental package for LlamaIndexTS",
|
||||
"version": "0.0.131",
|
||||
"version": "0.0.138",
|
||||
"type": "module",
|
||||
"types": "dist/type/index.d.ts",
|
||||
"main": "dist/cjs/index.js",
|
||||
|
||||
@@ -1,5 +1,110 @@
|
||||
# llamaindex
|
||||
|
||||
## 0.8.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 3d1808b: chore: bump version
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- @llamaindex/openai@0.1.42
|
||||
- @llamaindex/cloud@2.0.17
|
||||
- @llamaindex/node-parser@0.0.18
|
||||
- @llamaindex/anthropic@0.0.26
|
||||
- @llamaindex/clip@0.0.26
|
||||
- @llamaindex/deepinfra@0.0.26
|
||||
- @llamaindex/huggingface@0.0.26
|
||||
- @llamaindex/ollama@0.0.33
|
||||
- @llamaindex/portkey-ai@0.0.26
|
||||
- @llamaindex/replicate@0.0.26
|
||||
- @llamaindex/readers@1.0.19
|
||||
- @llamaindex/groq@0.0.41
|
||||
- @llamaindex/vllm@0.0.12
|
||||
|
||||
## 0.8.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [7e8230b]
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/readers@1.0.18
|
||||
- @llamaindex/cloud@2.0.16
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/node-parser@0.0.17
|
||||
- @llamaindex/anthropic@0.0.25
|
||||
- @llamaindex/clip@0.0.25
|
||||
- @llamaindex/deepinfra@0.0.25
|
||||
- @llamaindex/groq@0.0.40
|
||||
- @llamaindex/huggingface@0.0.25
|
||||
- @llamaindex/ollama@0.0.32
|
||||
- @llamaindex/openai@0.1.41
|
||||
- @llamaindex/portkey-ai@0.0.25
|
||||
- @llamaindex/replicate@0.0.25
|
||||
- @llamaindex/vllm@0.0.11
|
||||
|
||||
## 0.8.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 515f2c1: Add vector store for CosmosDB
|
||||
|
||||
## 0.8.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/cloud@2.0.15
|
||||
- @llamaindex/core@0.4.15
|
||||
- @llamaindex/node-parser@0.0.16
|
||||
- @llamaindex/anthropic@0.0.24
|
||||
- @llamaindex/clip@0.0.24
|
||||
- @llamaindex/deepinfra@0.0.24
|
||||
- @llamaindex/groq@0.0.39
|
||||
- @llamaindex/huggingface@0.0.24
|
||||
- @llamaindex/ollama@0.0.31
|
||||
- @llamaindex/openai@0.1.40
|
||||
- @llamaindex/portkey-ai@0.0.24
|
||||
- @llamaindex/replicate@0.0.24
|
||||
- @llamaindex/readers@1.0.17
|
||||
- @llamaindex/vllm@0.0.10
|
||||
|
||||
## 0.8.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 819af45: feat: add Azure Cosmos DB Mongo vCore ChatStore
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/cloud@2.0.14
|
||||
- @llamaindex/core@0.4.14
|
||||
- @llamaindex/node-parser@0.0.15
|
||||
- @llamaindex/anthropic@0.0.23
|
||||
- @llamaindex/clip@0.0.23
|
||||
- @llamaindex/deepinfra@0.0.23
|
||||
- @llamaindex/groq@0.0.38
|
||||
- @llamaindex/huggingface@0.0.23
|
||||
- @llamaindex/ollama@0.0.30
|
||||
- @llamaindex/openai@0.1.39
|
||||
- @llamaindex/portkey-ai@0.0.23
|
||||
- @llamaindex/replicate@0.0.23
|
||||
- @llamaindex/readers@1.0.16
|
||||
- @llamaindex/vllm@0.0.9
|
||||
|
||||
## 0.8.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 83c3897: fix: pinecone vector store search
|
||||
- efa2211: feat: add Azure Cosmos DB mongo vCore DocumentStore, IndexStore, KVStore
|
||||
|
||||
## 0.8.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 02b22da: fix: supports Vercel bundling
|
||||
|
||||
## 0.8.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "llamaindex",
|
||||
"version": "0.8.19",
|
||||
"version": "0.8.26",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"keywords": [
|
||||
@@ -65,7 +65,7 @@
|
||||
"lodash": "^4.17.21",
|
||||
"magic-bytes.js": "^1.10.0",
|
||||
"mongodb": "^6.7.0",
|
||||
"openai": "^4.72.0",
|
||||
"openai": "^4.73.1",
|
||||
"pathe": "^1.1.2",
|
||||
"rake-modified": "^1.0.8",
|
||||
"weaviate-client": "^3.2.3",
|
||||
|
||||
@@ -15,5 +15,6 @@ export * from "@llamaindex/readers/json";
|
||||
export * from "@llamaindex/readers/markdown";
|
||||
export * from "@llamaindex/readers/mongo";
|
||||
export * from "@llamaindex/readers/notion";
|
||||
export * from "@llamaindex/readers/obsidian";
|
||||
export * from "@llamaindex/readers/pdf";
|
||||
export * from "@llamaindex/readers/text";
|
||||
|
||||
@@ -0,0 +1,186 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import type {
|
||||
ChatMessage,
|
||||
MessageContent,
|
||||
MessageType,
|
||||
} from "@llamaindex/core/llms";
|
||||
import { BaseChatStore } from "@llamaindex/core/storage/chat-store";
|
||||
import type { Collection } from "mongodb";
|
||||
import { MongoClient } from "mongodb";
|
||||
const DEFAULT_CHAT_DATABASE = "ChatStoreDB";
|
||||
const DEFAULT_CHAT_Collection = "ChatStoreCollection";
|
||||
|
||||
export interface AzureCosmosVCoreChatStoreConfig {
|
||||
mongoClient?: MongoClient;
|
||||
dbName?: string;
|
||||
collectionName?: string;
|
||||
}
|
||||
|
||||
export class AzureCosmosVCoreChatStore<
|
||||
AdditionalMessageOptions extends object = object,
|
||||
> extends BaseChatStore<AdditionalMessageOptions> {
|
||||
private mongoClient: MongoClient;
|
||||
|
||||
private dbName: string;
|
||||
private collectionName: string;
|
||||
|
||||
private collection?: Collection;
|
||||
|
||||
/**
|
||||
* Create a new AzureCosmosVCoreChatStore instance.
|
||||
*/
|
||||
constructor({
|
||||
mongoClient,
|
||||
dbName = DEFAULT_CHAT_DATABASE,
|
||||
collectionName = DEFAULT_CHAT_Collection,
|
||||
}: AzureCosmosVCoreChatStoreConfig) {
|
||||
super();
|
||||
if (!mongoClient) {
|
||||
throw new Error(
|
||||
"MongoClient is required for AzureCosmosVCoreChatStore initialization",
|
||||
);
|
||||
}
|
||||
this.mongoClient = mongoClient;
|
||||
this.dbName = dbName;
|
||||
this.collectionName = collectionName;
|
||||
}
|
||||
|
||||
static fromMongoClient(
|
||||
mongoClient: MongoClient,
|
||||
dbName: string = DEFAULT_CHAT_DATABASE,
|
||||
collectionName: string = DEFAULT_CHAT_Collection,
|
||||
) {
|
||||
return new AzureCosmosVCoreChatStore({
|
||||
mongoClient,
|
||||
dbName,
|
||||
collectionName,
|
||||
});
|
||||
}
|
||||
|
||||
client(): MongoClient {
|
||||
return this.mongoClient;
|
||||
}
|
||||
|
||||
private convertToChatMessage(
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
message: any,
|
||||
): ChatMessage<AdditionalMessageOptions> {
|
||||
return {
|
||||
content: message.content as MessageContent,
|
||||
role: message.role as MessageType,
|
||||
options: message.options as AdditionalMessageOptions,
|
||||
} as ChatMessage<AdditionalMessageOptions>;
|
||||
}
|
||||
|
||||
private convertTovCoreMessage(
|
||||
message: ChatMessage<AdditionalMessageOptions>,
|
||||
): // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
any {
|
||||
return {
|
||||
content: message.content,
|
||||
role: message.role,
|
||||
options: message.options,
|
||||
};
|
||||
}
|
||||
|
||||
private async ensureCollection(): Promise<Collection> {
|
||||
if (!this.collection) {
|
||||
this.collection = this.mongoClient
|
||||
.db(this.dbName)
|
||||
.collection(this.collectionName);
|
||||
}
|
||||
return this.collection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set messages for a given key.
|
||||
*/
|
||||
async setMessages(
|
||||
key: string,
|
||||
messages: ChatMessage<AdditionalMessageOptions>[],
|
||||
): Promise<void> {
|
||||
const collection = await this.ensureCollection();
|
||||
const inputMessages = messages.map(this.convertTovCoreMessage);
|
||||
await collection.updateOne(
|
||||
{ id: key },
|
||||
{ $set: { messages: inputMessages } },
|
||||
{ upsert: true },
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get messages for a given key.
|
||||
*/
|
||||
async getMessages(
|
||||
key: string,
|
||||
): Promise<ChatMessage<AdditionalMessageOptions>[]> {
|
||||
const collection = await this.ensureCollection();
|
||||
const res = await collection.findOne({
|
||||
id: key,
|
||||
});
|
||||
const messageHistory = res?.messages ?? [];
|
||||
const result = messageHistory.map(this.convertToChatMessage);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a message for a given key.
|
||||
*/
|
||||
async addMessage(
|
||||
key: string,
|
||||
message: ChatMessage<AdditionalMessageOptions>,
|
||||
idx?: number,
|
||||
): Promise<void> {
|
||||
const collection = await this.ensureCollection();
|
||||
const res = await this.getMessages(key);
|
||||
const messageHistory = res.map(this.convertTovCoreMessage) ?? [];
|
||||
messageHistory.splice(
|
||||
idx ?? messageHistory.length,
|
||||
0,
|
||||
this.convertTovCoreMessage(message),
|
||||
);
|
||||
await collection.updateOne(
|
||||
{ id: key },
|
||||
{ $set: { messages: messageHistory } },
|
||||
{ upsert: true },
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all messages for a given key.
|
||||
*/
|
||||
async deleteMessages(key: string): Promise<void> {
|
||||
const collection = await this.ensureCollection();
|
||||
try {
|
||||
await collection.deleteOne({ id: key });
|
||||
// eslint-disable-next-line no-empty
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes one message at idx index for a given key.
|
||||
*/
|
||||
async deleteMessage(key: string, idx: number): Promise<void> {
|
||||
// const collection = await this.ensureCollection();
|
||||
const messageHistory = await this.getMessages(key);
|
||||
if (idx >= 0 && idx < messageHistory.length) {
|
||||
messageHistory.splice(idx, 1);
|
||||
await this.setMessages(key, messageHistory);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all keys.
|
||||
*/
|
||||
async getKeys(): Promise<IterableIterator<string>> {
|
||||
const collection = await this.ensureCollection();
|
||||
const keys = await collection.distinct("id");
|
||||
|
||||
function* keyGenerator(): IterableIterator<string> {
|
||||
for (const key of keys) {
|
||||
yield key;
|
||||
}
|
||||
}
|
||||
return keyGenerator();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
import { MongoClient } from "mongodb";
|
||||
import { AzureCosmosVCoreKVStore } from "../kvStore/AzureCosmosMongovCoreKVStore.js";
|
||||
import { KVDocumentStore } from "./KVDocumentStore.js";
|
||||
|
||||
const DEFAULT_DATABASE = "DocumentStoreDB";
|
||||
const DEFAULT_COLLECTION = "DocumentStoreCollection";
|
||||
|
||||
export interface AzureCosmosVCoreDocumentStoreArgs {
|
||||
azureCosmosVCoreKVStore: AzureCosmosVCoreKVStore;
|
||||
namespace?: string;
|
||||
}
|
||||
|
||||
export class AzureCosmosVCoreDocumentStore extends KVDocumentStore {
|
||||
constructor({
|
||||
azureCosmosVCoreKVStore,
|
||||
namespace,
|
||||
}: AzureCosmosVCoreDocumentStoreArgs) {
|
||||
super(azureCosmosVCoreKVStore, namespace);
|
||||
}
|
||||
|
||||
/**
|
||||
* Static method for creating an instance using a MongoClient.
|
||||
* @returns Instance of AzureCosmosVCoreDocumentStore
|
||||
* @param mongoClient - MongoClient instance
|
||||
* @param dbName - Database name
|
||||
* @param collectionName - Collection name
|
||||
* @example
|
||||
* ```ts
|
||||
* const mongoClient = new MongoClient("mongodb://localhost:27017");
|
||||
* const indexStore = AzureCosmosVCoreDocumentStore.fromMongoClient(mongoClient, "my_db", "my_collection");
|
||||
* ```
|
||||
*/
|
||||
static fromMongoClient(
|
||||
mongoClient: MongoClient,
|
||||
dbName: string = DEFAULT_DATABASE,
|
||||
collectionName: string = DEFAULT_COLLECTION,
|
||||
) {
|
||||
const azureCosmosVCoreKVStore = new AzureCosmosVCoreKVStore({
|
||||
mongoClient,
|
||||
dbName,
|
||||
collectionName,
|
||||
});
|
||||
const namespace = `${dbName}.${collectionName}`;
|
||||
return new AzureCosmosVCoreDocumentStore({
|
||||
azureCosmosVCoreKVStore,
|
||||
namespace,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -2,13 +2,17 @@ export * from "@llamaindex/core/storage/chat-store";
|
||||
export * from "@llamaindex/core/storage/doc-store";
|
||||
export * from "@llamaindex/core/storage/index-store";
|
||||
export * from "@llamaindex/core/storage/kv-store";
|
||||
export * from "./chatStore/AzureCosmosMongovCoreChatStore.js";
|
||||
export * from "./chatStore/AzureCosmosNoSqlChatStore.js";
|
||||
export * from "./docStore/AzureCosmosMongovCoreDocumentStore.js";
|
||||
export * from "./docStore/AzureCosmosNoSqlDocumentStore.js";
|
||||
export { PostgresDocumentStore } from "./docStore/PostgresDocumentStore.js";
|
||||
export { SimpleDocumentStore } from "./docStore/SimpleDocumentStore.js";
|
||||
export * from "./FileSystem.js";
|
||||
export * from "./indexStore/AzureCosmosMongovCoreIndexStore.js";
|
||||
export * from "./indexStore/AzureCosmosNoSqlIndexStore.js";
|
||||
export { PostgresIndexStore } from "./indexStore/PostgresIndexStore.js";
|
||||
export * from "./kvStore/AzureCosmosMongovCoreKVStore.js";
|
||||
export * from "./kvStore/AzureCosmosNoSqlKVStore.js";
|
||||
export { PostgresKVStore } from "./kvStore/PostgresKVStore.js";
|
||||
export * from "./StorageContext.js";
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
import { MongoClient } from "mongodb";
|
||||
import { AzureCosmosVCoreKVStore } from "../kvStore/AzureCosmosMongovCoreKVStore.js";
|
||||
import { KVIndexStore } from "./KVIndexStore.js";
|
||||
|
||||
const DEFAULT_DATABASE = "IndexStoreDB";
|
||||
const DEFAULT_COLLECTION = "IndexStoreCollection";
|
||||
|
||||
export interface AzureCosmosVCoreIndexStoreArgs {
|
||||
azureCosmosVCoreKVStore: AzureCosmosVCoreKVStore;
|
||||
namespace?: string;
|
||||
}
|
||||
|
||||
export class AzureCosmosVCoreIndexStore extends KVIndexStore {
|
||||
constructor({
|
||||
azureCosmosVCoreKVStore,
|
||||
namespace,
|
||||
}: AzureCosmosVCoreIndexStoreArgs) {
|
||||
super(azureCosmosVCoreKVStore, namespace);
|
||||
}
|
||||
|
||||
/**
|
||||
* Static method for creating an instance using a MongoClient.
|
||||
* @returns Instance of AzureCosmosVCoreIndexStore
|
||||
* @param mongoClient - MongoClient instance
|
||||
* @param dbName - Database name
|
||||
* @param collectionName - Collection name
|
||||
* @example
|
||||
* ```ts
|
||||
* const mongoClient = new MongoClient("mongodb://localhost:27017");
|
||||
* const indexStore = AzureCosmosVCoreIndexStore.fromMongoClient(mongoClient, "my_db", "my_collection");
|
||||
* ```
|
||||
*/
|
||||
static fromMongoClient(
|
||||
mongoClient: MongoClient,
|
||||
dbName: string = DEFAULT_DATABASE,
|
||||
collectionName: string = DEFAULT_COLLECTION,
|
||||
) {
|
||||
const azureCosmosVCoreKVStore = new AzureCosmosVCoreKVStore({
|
||||
mongoClient,
|
||||
dbName,
|
||||
collectionName,
|
||||
});
|
||||
const namespace = `${dbName}.${collectionName}`;
|
||||
return new AzureCosmosVCoreIndexStore({
|
||||
azureCosmosVCoreKVStore,
|
||||
namespace,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { BaseKVStore } from "@llamaindex/core/storage/kv-store";
|
||||
import type { Collection } from "mongodb";
|
||||
import { MongoClient } from "mongodb";
|
||||
const DEFAULT_CHAT_DATABASE = "KVStoreDB";
|
||||
const DEFAULT_CHAT_Collection = "KVStoreCollection";
|
||||
|
||||
export interface VcoreConnectionStringOptions
|
||||
extends AzureCosmosVCoreKVStoreConfig {
|
||||
connectionString?: string;
|
||||
}
|
||||
|
||||
export interface AzureCosmosVCoreKVStoreConfig {
|
||||
mongoClient?: MongoClient;
|
||||
dbName?: string;
|
||||
collectionName?: string;
|
||||
}
|
||||
|
||||
export class AzureCosmosVCoreKVStore extends BaseKVStore {
|
||||
private mongoClient: MongoClient;
|
||||
|
||||
private dbName: string;
|
||||
private collectionName: string;
|
||||
|
||||
private collection?: Collection;
|
||||
|
||||
/**
|
||||
* Create a new AzureCosmosDBNoSQLVectorStore instance.
|
||||
*/
|
||||
constructor({
|
||||
mongoClient,
|
||||
dbName = DEFAULT_CHAT_DATABASE,
|
||||
collectionName = DEFAULT_CHAT_Collection,
|
||||
}: AzureCosmosVCoreKVStoreConfig) {
|
||||
super();
|
||||
if (!mongoClient) {
|
||||
throw new Error(
|
||||
"MongoClient is required for AzureCosmosDBNoSQLVectorStore initialization",
|
||||
);
|
||||
}
|
||||
this.mongoClient = mongoClient;
|
||||
this.dbName = dbName;
|
||||
this.collectionName = collectionName;
|
||||
}
|
||||
|
||||
client(): MongoClient {
|
||||
return this.mongoClient;
|
||||
}
|
||||
|
||||
private async ensureCollection(): Promise<Collection> {
|
||||
if (!this.collection) {
|
||||
this.collection = this.mongoClient
|
||||
.db(this.dbName)
|
||||
.collection(this.collectionName);
|
||||
}
|
||||
return this.collection;
|
||||
}
|
||||
|
||||
async put(key: string, val: Record<string, any>): Promise<void> {
|
||||
const collection = await this.ensureCollection();
|
||||
const insertResult = await collection.insertOne({
|
||||
id: key,
|
||||
messages: val,
|
||||
});
|
||||
}
|
||||
|
||||
async get(key: string): Promise<Record<string, any> | null> {
|
||||
const collection = await this.ensureCollection();
|
||||
const result = await collection.findOne({ id: key });
|
||||
return result || null;
|
||||
}
|
||||
|
||||
async getAll(): Promise<Record<string, Record<string, any>>> {
|
||||
const collection = await this.ensureCollection();
|
||||
const cursor = collection.find();
|
||||
const output: Record<string, Record<string, any>> = {};
|
||||
await cursor.forEach((item) => {
|
||||
output[item.id] = item.messages;
|
||||
});
|
||||
return output;
|
||||
}
|
||||
|
||||
async delete(key: string): Promise<boolean> {
|
||||
const collection = await this.ensureCollection();
|
||||
await collection.deleteOne({ id: key });
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,328 @@
|
||||
import type { BaseNode } from "@llamaindex/core/schema";
|
||||
import { MetadataMode } from "@llamaindex/core/schema";
|
||||
import { getEnv } from "@llamaindex/env";
|
||||
import { Collection, Db, MongoClient } from "mongodb";
|
||||
import {
|
||||
BaseVectorStore,
|
||||
type VectorStoreBaseParams,
|
||||
type VectorStoreQuery,
|
||||
type VectorStoreQueryResult,
|
||||
} from "./types.js";
|
||||
import { metadataDictToNode, nodeToMetadata } from "./utils.js";
|
||||
|
||||
/** Azure Cosmos DB for MongoDB vCore Similarity type. */
|
||||
export const AzureCosmosDBMongoDBSimilarityType = {
|
||||
/** Cosine similarity */
|
||||
COS: "COS",
|
||||
/** Inner - product */
|
||||
IP: "IP",
|
||||
/** Euclidian distance */
|
||||
L2: "L2",
|
||||
} as const;
|
||||
|
||||
/** Azure Cosmos DB for MongoDB vCore Similarity type. */
|
||||
export type AzureCosmosDBMongoDBSimilarityType =
|
||||
(typeof AzureCosmosDBMongoDBSimilarityType)[keyof typeof AzureCosmosDBMongoDBSimilarityType];
|
||||
|
||||
/** Azure Cosmos DB for MongoDB vCore Index Options. */
|
||||
export type AzureCosmosDBMongoDBIndexOptions = {
|
||||
readonly indexType?: "ivf" | "hnsw" | "diskann" | undefined;
|
||||
/** Number of clusters that the inverted file (IVF) index uses to group the vector data. */
|
||||
readonly numLists?: number | undefined;
|
||||
/** Number of dimensions for vector similarity. */
|
||||
readonly dimensions?: number | undefined;
|
||||
/** Similarity metric to use with the IVF index. */
|
||||
readonly similarity?: AzureCosmosDBMongoDBSimilarityType | undefined;
|
||||
/** The max number of connections per layer with the HNSW index. */
|
||||
readonly m?: number | undefined;
|
||||
/** The size of the dynamic candidate list for constructing the graph with the HNSW index. */
|
||||
readonly efConstruction?: number | undefined;
|
||||
/** Max number of neighbors withe the Diskann idnex */
|
||||
readonly maxDegree?: number | undefined;
|
||||
/** L value for index building withe the Diskann idnex */
|
||||
readonly lBuild?: number | undefined;
|
||||
/** L value for index searching withe the Diskann idnex */
|
||||
readonly lSearch?: number | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Azure Cosmos DB for MongoDB vCore vector store.
|
||||
* To use this, you should have both:
|
||||
* - the `mongodb` NPM package installed
|
||||
* - a connection string associated with a MongoDB VCore Cluster
|
||||
*
|
||||
* You do not need to create a database or collection, it will be created
|
||||
* automatically.
|
||||
*
|
||||
* You also need an index on the collection, which is by default be created
|
||||
* automatically using the `createIndex` method.
|
||||
*/
|
||||
export class AzureCosmosDBMongoDBVectorStore extends BaseVectorStore {
|
||||
storesText: boolean = true;
|
||||
flatMetadata: boolean = true;
|
||||
|
||||
dbName: string;
|
||||
|
||||
collectionName: string;
|
||||
|
||||
indexedMetadataFields: string[];
|
||||
|
||||
/**
|
||||
* The used MongoClient. If not given, a new MongoClient is created based on the MONGODB_URI env variable.
|
||||
*/
|
||||
mongodbClient: MongoClient;
|
||||
|
||||
indexName: string;
|
||||
|
||||
embeddingKey: string;
|
||||
|
||||
idKey: string;
|
||||
|
||||
textKey: string;
|
||||
|
||||
metadataKey: string;
|
||||
|
||||
indexOptions: AzureCosmosDBMongoDBIndexOptions;
|
||||
|
||||
private collection?: Collection;
|
||||
|
||||
private database: Db;
|
||||
|
||||
constructor(
|
||||
init: Partial<AzureCosmosDBMongoDBVectorStore> & {
|
||||
dbName: string;
|
||||
collectionName: string;
|
||||
indexedMetadataFields?: string[];
|
||||
} & VectorStoreBaseParams,
|
||||
) {
|
||||
super(init);
|
||||
if (init.mongodbClient) {
|
||||
this.mongodbClient = init.mongodbClient;
|
||||
} else {
|
||||
const mongoUri = getEnv("AZURE_COSMOSDB_MONGODB_CONNECTION_STRING");
|
||||
if (!mongoUri) {
|
||||
throw new Error(
|
||||
"AzureCosmosDBMongoDBVectorStore client or connection string must be set.",
|
||||
);
|
||||
}
|
||||
this.mongodbClient = new MongoClient(mongoUri);
|
||||
}
|
||||
|
||||
this.dbName = init.dbName ?? "documentsDB";
|
||||
this.collectionName = init.collectionName ?? "documents";
|
||||
this.indexedMetadataFields = init.indexedMetadataFields ?? [];
|
||||
this.indexName = init.indexName ?? "vectorSearchIndex";
|
||||
this.embeddingKey = init.embeddingKey ?? "vectorContent";
|
||||
this.idKey = init.idKey ?? "id";
|
||||
this.textKey = init.textKey ?? "text";
|
||||
this.metadataKey = init.metadataKey ?? "metadata";
|
||||
this.indexOptions = init.indexOptions ?? {};
|
||||
this.database = this.mongodbClient.db(this.dbName);
|
||||
}
|
||||
|
||||
client() {
|
||||
return this.mongodbClient;
|
||||
}
|
||||
|
||||
async ensureCollection() {
|
||||
if (!this.collection) {
|
||||
const collection = await this.mongodbClient
|
||||
.db(this.dbName)
|
||||
.createCollection(this.collectionName);
|
||||
|
||||
this.collection = collection;
|
||||
}
|
||||
|
||||
return this.collection;
|
||||
}
|
||||
|
||||
async add(nodes: BaseNode[]): Promise<string[]> {
|
||||
if (!nodes || nodes.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const dataToInsert = nodes.map((node) => {
|
||||
const metadata = nodeToMetadata(
|
||||
node,
|
||||
true,
|
||||
this.textKey,
|
||||
this.flatMetadata,
|
||||
);
|
||||
|
||||
// Include the specified metadata fields in the top level of the document (to help filter)
|
||||
const populatedMetadata: Record<string, unknown> = {};
|
||||
for (const field of this.indexedMetadataFields) {
|
||||
populatedMetadata[field] = metadata[field];
|
||||
}
|
||||
|
||||
return {
|
||||
[this.idKey]: node.id_,
|
||||
[this.embeddingKey]: node.getEmbedding(),
|
||||
[this.textKey]: node.getContent(MetadataMode.NONE) || "",
|
||||
[this.metadataKey]: metadata,
|
||||
...populatedMetadata,
|
||||
};
|
||||
});
|
||||
|
||||
const collection = await this.ensureCollection();
|
||||
const insertResult = await collection.insertMany(dataToInsert);
|
||||
return Object.values(insertResult.insertedIds).map((id) => String(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes specified documents from the AzureCosmosDBMongoDBVectorStore.
|
||||
* @param params Parameters for the delete operation.
|
||||
* @returns A promise that resolves when the documents have been removed.
|
||||
*/
|
||||
async delete(id: string, deleteOptions?: object): Promise<void> {
|
||||
const collection = await this.ensureCollection();
|
||||
await collection.deleteMany(
|
||||
{
|
||||
id: id,
|
||||
},
|
||||
deleteOptions,
|
||||
);
|
||||
}
|
||||
|
||||
async query(
|
||||
query: VectorStoreQuery,
|
||||
options?: object,
|
||||
): Promise<VectorStoreQueryResult> {
|
||||
const pipeline = [
|
||||
{
|
||||
$search: {
|
||||
cosmosSearch: {
|
||||
vector: query.queryEmbedding,
|
||||
path: this.embeddingKey,
|
||||
k: query.similarityTopK ?? 4,
|
||||
},
|
||||
returnStoredSource: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const collection = await this.ensureCollection();
|
||||
const cursor = await collection.aggregate(pipeline);
|
||||
|
||||
const nodes: BaseNode[] = [];
|
||||
const ids: string[] = [];
|
||||
const similarities: number[] = [];
|
||||
|
||||
for await (const res of await cursor) {
|
||||
const text = res[this.textKey];
|
||||
const score = res.score;
|
||||
const id = res[this.idKey];
|
||||
const metadata = res[this.metadataKey];
|
||||
|
||||
const node = metadataDictToNode(metadata);
|
||||
node.setContent(text);
|
||||
|
||||
ids.push(id);
|
||||
nodes.push(node);
|
||||
similarities.push(score);
|
||||
}
|
||||
|
||||
const result = {
|
||||
nodes,
|
||||
similarities,
|
||||
ids,
|
||||
};
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an index on the collection with the specified index name during
|
||||
* instance construction.
|
||||
*
|
||||
* Setting the numLists parameter correctly is important for achieving good
|
||||
* accuracy and performance.
|
||||
* Since the vector store uses IVF as the indexing strategy, you should
|
||||
* create the index only after you have loaded a large enough sample
|
||||
* documents to ensure that the centroids for the respective buckets are
|
||||
* faily distributed.
|
||||
*
|
||||
* @param indexType Index Type for Mongo vCore index.
|
||||
* @param dimensions Number of dimensions for vector similarity.
|
||||
* The maximum number of supported dimensions is 2000.
|
||||
* If no number is provided, it will be determined automatically by
|
||||
* embedding a short text.
|
||||
* @param similarity Similarity metric to use with the IVF index.
|
||||
* Possible options are:
|
||||
* - CosmosDBSimilarityType.COS (cosine distance)
|
||||
* - CosmosDBSimilarityType.L2 (Euclidean distance)
|
||||
* - CosmosDBSimilarityType.IP (inner product)
|
||||
* @returns A promise that resolves when the index has been created.
|
||||
*/
|
||||
async createIndex(
|
||||
dimensions: number | undefined = undefined,
|
||||
indexType: "ivf" | "hnsw" | "diskann" = "ivf",
|
||||
similarity: AzureCosmosDBMongoDBSimilarityType = AzureCosmosDBMongoDBSimilarityType.COS,
|
||||
): Promise<void> {
|
||||
let vectorLength = dimensions;
|
||||
|
||||
if (vectorLength === undefined) {
|
||||
vectorLength = 1536;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const cosmosSearchOptions: any = {
|
||||
kind: "",
|
||||
similarity,
|
||||
dimensions: vectorLength,
|
||||
};
|
||||
|
||||
if (indexType === "hnsw") {
|
||||
cosmosSearchOptions.kind = "vector-hnsw";
|
||||
cosmosSearchOptions.m = this.indexOptions.m ?? 16;
|
||||
cosmosSearchOptions.efConstruction =
|
||||
this.indexOptions.efConstruction ?? 200;
|
||||
} else if (indexType === "diskann") {
|
||||
cosmosSearchOptions.kind = "vector-diskann";
|
||||
cosmosSearchOptions.maxDegree = this.indexOptions.maxDegree ?? 40;
|
||||
cosmosSearchOptions.lBuild = this.indexOptions.lBuild ?? 50;
|
||||
cosmosSearchOptions.lSearch = this.indexOptions.lSearch ?? 40;
|
||||
/** Default to IVF index */
|
||||
} else {
|
||||
cosmosSearchOptions.kind = "vector-ivf";
|
||||
cosmosSearchOptions.numLists = this.indexOptions.numLists ?? 100;
|
||||
}
|
||||
|
||||
const createIndexCommands = {
|
||||
createIndexes: this.collection?.collectionName,
|
||||
indexes: [
|
||||
{
|
||||
name: this.indexName,
|
||||
key: { [this.embeddingKey]: "cosmosSearch" },
|
||||
cosmosSearchOptions,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
await this.database.command(createIndexCommands);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the specified index name during instance construction exists
|
||||
* on the collection.
|
||||
* @returns A promise that resolves to a boolean indicating if the index exists.
|
||||
*/
|
||||
async checkIndexExists(): Promise<boolean> {
|
||||
const collection = await this.ensureCollection();
|
||||
const indexes = await collection.listIndexes().toArray();
|
||||
return indexes.some((index) => index.name === this.indexName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the index specified during instance construction if it exists.
|
||||
* @returns A promise that resolves when the index has been deleted.
|
||||
*/
|
||||
async deleteIndex(indexName: string): Promise<void> {
|
||||
const collection = await this.ensureCollection();
|
||||
const indexes = await collection.listIndexes().toArray();
|
||||
const indexToDelete = indexes.find((index) => index.name === indexName);
|
||||
if (indexToDelete) {
|
||||
await collection.dropIndex(indexName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -176,7 +176,12 @@ export class PGVectorStore extends BaseVectorStore {
|
||||
if ("clientConfig" in config) {
|
||||
this.clientConfig = config.clientConfig;
|
||||
} else {
|
||||
if (config.client.constructor.name.includes("Vercel")) {
|
||||
if (
|
||||
config.client.constructor.name.includes("Vercel") ||
|
||||
(!!(config.client as VercelPool).connect &&
|
||||
!!(config.client as VercelPool).query &&
|
||||
!(config.client as Sql).unsafe)
|
||||
) {
|
||||
this.isDBConnected = true;
|
||||
this.db = fromVercelPool(config.client as unknown as VercelPool);
|
||||
} else if (typeof config.client === "function") {
|
||||
|
||||
@@ -26,6 +26,7 @@ type PineconeParams = {
|
||||
chunkSize?: number;
|
||||
namespace?: string;
|
||||
textKey?: string;
|
||||
apiKey?: string;
|
||||
} & VectorStoreBaseParams;
|
||||
|
||||
/**
|
||||
@@ -48,6 +49,8 @@ export class PineconeVectorStore extends BaseVectorStore {
|
||||
chunkSize: number;
|
||||
textKey: string;
|
||||
|
||||
apiKey: string;
|
||||
|
||||
constructor(params?: PineconeParams) {
|
||||
super(params);
|
||||
this.indexName =
|
||||
@@ -57,12 +60,19 @@ export class PineconeVectorStore extends BaseVectorStore {
|
||||
params?.chunkSize ??
|
||||
Number.parseInt(getEnv("PINECONE_CHUNK_SIZE") ?? "100");
|
||||
this.textKey = params?.textKey ?? "text";
|
||||
const apiKey = params?.apiKey ?? getEnv("PINECONE_API_KEY");
|
||||
if (!apiKey) {
|
||||
throw new Error("PINECONE_API_KEY is required");
|
||||
}
|
||||
this.apiKey = apiKey;
|
||||
}
|
||||
|
||||
private async getDb(): Promise<Pinecone> {
|
||||
if (!this.db) {
|
||||
const { Pinecone } = await import("@pinecone-database/pinecone");
|
||||
this.db = await new Pinecone();
|
||||
this.db = new Pinecone({
|
||||
apiKey: this.apiKey,
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.resolve(this.db);
|
||||
@@ -100,7 +110,7 @@ export class PineconeVectorStore extends BaseVectorStore {
|
||||
*/
|
||||
async add(embeddingResults: BaseNode<Metadata>[]): Promise<string[]> {
|
||||
if (embeddingResults.length == 0) {
|
||||
return Promise.resolve([]);
|
||||
return [];
|
||||
}
|
||||
|
||||
const idx: Index = await this.index();
|
||||
@@ -110,10 +120,10 @@ export class PineconeVectorStore extends BaseVectorStore {
|
||||
const chunk = nodes.slice(i, i + this.chunkSize);
|
||||
const result = await this.saveChunk(idx, chunk);
|
||||
if (!result) {
|
||||
return Promise.reject(new Error("Failed to save chunk"));
|
||||
throw new Error("Failed to save chunk");
|
||||
}
|
||||
}
|
||||
return Promise.resolve([]);
|
||||
return [];
|
||||
}
|
||||
|
||||
protected async saveChunk(idx: Index, chunk: PineconeRecord[]) {
|
||||
@@ -157,13 +167,19 @@ export class PineconeVectorStore extends BaseVectorStore {
|
||||
topK: query.similarityTopK,
|
||||
includeValues: true,
|
||||
includeMetadata: true,
|
||||
filter: filter,
|
||||
};
|
||||
|
||||
if (filter) {
|
||||
defaultOptions.filter = filter;
|
||||
}
|
||||
|
||||
const idx = await this.index();
|
||||
const results = await idx.query(defaultOptions);
|
||||
|
||||
const idList = results.matches.map((row) => row.id);
|
||||
if (idList.length == 0) {
|
||||
return { nodes: [], similarities: [], ids: [] };
|
||||
}
|
||||
const records: FetchResponse = await idx.fetch(idList);
|
||||
const rows = Object.values(records.records);
|
||||
|
||||
@@ -179,13 +195,11 @@ export class PineconeVectorStore extends BaseVectorStore {
|
||||
return node;
|
||||
});
|
||||
|
||||
const ret = {
|
||||
return {
|
||||
nodes: nodes,
|
||||
similarities: results.matches.map((row) => row.score || 999),
|
||||
ids: results.matches.map((row) => row.id),
|
||||
};
|
||||
|
||||
return Promise.resolve(ret);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -197,8 +211,8 @@ export class PineconeVectorStore extends BaseVectorStore {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
toPineconeFilter(stdFilters?: MetadataFilters): object {
|
||||
if (!stdFilters) return {};
|
||||
toPineconeFilter(stdFilters?: MetadataFilters): object | undefined {
|
||||
if (stdFilters == null) return undefined;
|
||||
|
||||
const transformCondition = (
|
||||
condition: `${FilterCondition}` = "and",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
export * from "./AstraDBVectorStore.js";
|
||||
export * from "./AzureCosmosDBMongoVectorStore.js";
|
||||
export * from "./AzureCosmosDBNoSqlVectorStore.js";
|
||||
export * from "./ChromaVectorStore.js";
|
||||
export * from "./MilvusVectorStore.js";
|
||||
|
||||
@@ -65,7 +65,19 @@ export function metadataDictToNode(
|
||||
}
|
||||
} else {
|
||||
nodeObj = JSON.parse(nodeContent);
|
||||
nodeObj.metadata = rest;
|
||||
nodeObj = {
|
||||
...rest,
|
||||
...options?.fallback,
|
||||
...nodeObj,
|
||||
};
|
||||
nodeObj.metadata = {
|
||||
...(options?.fallback &&
|
||||
"metadata" in options.fallback &&
|
||||
typeof options.fallback.metadata === "object"
|
||||
? options?.fallback.metadata
|
||||
: {}),
|
||||
...rest,
|
||||
};
|
||||
}
|
||||
|
||||
// Note: we're using the name of the class stored in `_node_type`
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# @llamaindex/node-parser
|
||||
|
||||
## 0.0.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
|
||||
## 0.0.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/node-parser",
|
||||
"version": "0.0.14",
|
||||
"version": "0.0.18",
|
||||
"description": "Node parser for LlamaIndex",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# @llamaindex/anthropic
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
|
||||
## 0.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/anthropic",
|
||||
"description": "Anthropic Adapter for LlamaIndex",
|
||||
"version": "0.0.22",
|
||||
"version": "0.0.26",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,41 @@
|
||||
# @llamaindex/clip
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
- @llamaindex/openai@0.1.40
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
- @llamaindex/openai@0.1.39
|
||||
|
||||
## 0.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/clip",
|
||||
"description": "Clip Embedding Adapter for LlamaIndex",
|
||||
"version": "0.0.22",
|
||||
"version": "0.0.26",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.cjs",
|
||||
|
||||
@@ -1,5 +1,41 @@
|
||||
# @llamaindex/deepinfra
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
- @llamaindex/openai@0.1.40
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
- @llamaindex/openai@0.1.39
|
||||
|
||||
## 0.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/deepinfra",
|
||||
"description": "Deepinfra Adapter for LlamaIndex",
|
||||
"version": "0.0.22",
|
||||
"version": "0.0.26",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# @llamaindex/groq
|
||||
|
||||
## 0.0.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/openai@0.1.40
|
||||
|
||||
## 0.0.38
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/openai@0.1.39
|
||||
|
||||
## 0.0.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/groq",
|
||||
"description": "Groq Adapter for LlamaIndex",
|
||||
"version": "0.0.37",
|
||||
"version": "0.0.41",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,41 @@
|
||||
# @llamaindex/huggingface
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
- @llamaindex/openai@0.1.40
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
- @llamaindex/openai@0.1.39
|
||||
|
||||
## 0.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/huggingface",
|
||||
"description": "Huggingface Adapter for LlamaIndex",
|
||||
"version": "0.0.22",
|
||||
"version": "0.0.26",
|
||||
"type": "module",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.cjs",
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# @llamaindex/ollama
|
||||
|
||||
## 0.0.33
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.30
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
|
||||
## 0.0.29
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/ollama",
|
||||
"description": "Ollama Adapter for LlamaIndex",
|
||||
"version": "0.0.29",
|
||||
"version": "0.0.33",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,38 @@
|
||||
# @llamaindex/openai
|
||||
|
||||
## 0.1.42
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 3d1808b: chore: bump version
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.1.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.1.40
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.1.39
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
|
||||
## 0.1.38
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/openai",
|
||||
"description": "OpenAI Adapter for LlamaIndex",
|
||||
"version": "0.1.38",
|
||||
"version": "0.1.42",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
@@ -35,6 +35,6 @@
|
||||
"dependencies": {
|
||||
"@llamaindex/core": "workspace:*",
|
||||
"@llamaindex/env": "workspace:*",
|
||||
"openai": "^4.72.0"
|
||||
"openai": "^4.73.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,6 +75,9 @@ export const GPT4_MODELS = {
|
||||
"gpt-4o-audio-preview-2024-10-01": {
|
||||
contextWindow: 128000,
|
||||
},
|
||||
"gpt-4o-2024-11-20": {
|
||||
contextWindow: 128000,
|
||||
},
|
||||
};
|
||||
|
||||
// NOTE we don't currently support gpt-3.5-turbo-instruct and don't plan to in the near future
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# @llamaindex/portkey-ai
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
|
||||
## 0.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/portkey-ai",
|
||||
"description": "Portkey Adapter for LlamaIndex",
|
||||
"version": "0.0.22",
|
||||
"version": "0.0.26",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# @llamaindex/replicate
|
||||
|
||||
## 0.0.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 0.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 0.0.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
|
||||
## 0.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/replicate",
|
||||
"description": "Replicate Adapter for LlamaIndex",
|
||||
"version": "0.0.22",
|
||||
"version": "0.0.26",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# @llamaindex/vercel
|
||||
|
||||
## 0.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 0.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
|
||||
## 0.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- fd38a25: Add vercel tool adapter to use query engine tool
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"name": "@llamaindex/vercel",
|
||||
"description": "Vercel Adapter for LlamaIndex",
|
||||
"version": "0.0.4",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
"exports": {
|
||||
".": {
|
||||
"edge-light": {
|
||||
"types": "./dist/index.edge-light.d.ts",
|
||||
"default": "./dist/index.edge-light.js"
|
||||
},
|
||||
"workerd": {
|
||||
"types": "./dist/index.edge-light.d.ts",
|
||||
"default": "./dist/index.edge-light.js"
|
||||
},
|
||||
"require": {
|
||||
"types": "./dist/index.d.cts",
|
||||
"default": "./dist/index.cjs"
|
||||
},
|
||||
"import": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"default": "./dist/index.js"
|
||||
}
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/providers/vercel"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "bunchee",
|
||||
"dev": "bunchee --watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"bunchee": "5.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@llamaindex/core": "workspace:*",
|
||||
"zod": "^3.23.8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ai": "^4.0.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export { llamaindex } from "./tool";
|
||||
@@ -0,0 +1,29 @@
|
||||
import type { BaseQueryEngine } from "@llamaindex/core/query-engine";
|
||||
import { type CoreTool, tool } from "ai";
|
||||
import { z } from "zod";
|
||||
|
||||
interface DatasourceIndex {
|
||||
asQueryEngine: () => BaseQueryEngine;
|
||||
}
|
||||
|
||||
export function llamaindex({
|
||||
index,
|
||||
description,
|
||||
}: {
|
||||
index: DatasourceIndex;
|
||||
description?: string;
|
||||
}): CoreTool {
|
||||
const queryEngine = index.asQueryEngine();
|
||||
return tool({
|
||||
description: description ?? "Get information about your documents.",
|
||||
parameters: z.object({
|
||||
query: z
|
||||
.string()
|
||||
.describe("The query to get information about your documents."),
|
||||
}),
|
||||
execute: async ({ query }) => {
|
||||
const result = await queryEngine?.query({ query });
|
||||
return result?.message.content ?? "No result found in documents.";
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"target": "ESNext",
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "bundler",
|
||||
"outDir": "./lib",
|
||||
"tsBuildInfoFile": "./lib/.tsbuildinfo"
|
||||
},
|
||||
"include": ["./src"],
|
||||
"references": [
|
||||
{
|
||||
"path": "../../core/tsconfig.json"
|
||||
},
|
||||
{
|
||||
"path": "../../env/tsconfig.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,32 @@
|
||||
# @llamaindex/vllm
|
||||
|
||||
## 0.0.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/openai@0.1.42
|
||||
|
||||
## 0.0.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/openai@0.1.41
|
||||
|
||||
## 0.0.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/openai@0.1.40
|
||||
|
||||
## 0.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/openai@0.1.39
|
||||
|
||||
## 0.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/vllm",
|
||||
"description": "vLLM Adapter for LlamaIndex",
|
||||
"version": "0.0.8",
|
||||
"version": "0.0.12",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,38 @@
|
||||
# @llamaindex/readers
|
||||
|
||||
## 1.0.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [3d1808b]
|
||||
- @llamaindex/core@0.4.17
|
||||
|
||||
## 1.0.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 7e8230b: Add obsidian reader
|
||||
- 8be4589: chore: bump version
|
||||
- Updated dependencies [8be4589]
|
||||
- @llamaindex/core@0.4.16
|
||||
- @llamaindex/env@0.1.24
|
||||
|
||||
## 1.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [d2b2722]
|
||||
- @llamaindex/env@0.1.23
|
||||
- @llamaindex/core@0.4.15
|
||||
|
||||
## 1.0.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [969365c]
|
||||
- @llamaindex/env@0.1.22
|
||||
- @llamaindex/core@0.4.14
|
||||
|
||||
## 1.0.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"module": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"edge-light": "./dist/index.edge-light.js",
|
||||
"workerd": "./dist/index.workerd.js",
|
||||
"default": "./dist/index.js"
|
||||
}
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/readers",
|
||||
"description": "LlamaIndex Readers",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.19",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
"./node/hook": "./node/dist/hook.js",
|
||||
@@ -142,6 +142,24 @@
|
||||
"default": "./notion/dist/index.js"
|
||||
}
|
||||
},
|
||||
"./obsidian": {
|
||||
"edge-light": {
|
||||
"types": "./obsidian/dist/index.edge-light.d.ts",
|
||||
"default": "./obsidian/dist/index.edge-light.js"
|
||||
},
|
||||
"workerd": {
|
||||
"types": "./obsidian/dist/index.workerd.d.ts",
|
||||
"default": "./obsidian/dist/index.workerd.js"
|
||||
},
|
||||
"require": {
|
||||
"types": "./obsidian/dist/index.d.cts",
|
||||
"default": "./obsidian/dist/index.cjs"
|
||||
},
|
||||
"import": {
|
||||
"types": "./obsidian/dist/index.d.ts",
|
||||
"default": "./obsidian/dist/index.js"
|
||||
}
|
||||
},
|
||||
"./pdf": {
|
||||
"require": {
|
||||
"types": "./pdf/dist/index.d.cts",
|
||||
@@ -176,6 +194,7 @@
|
||||
"markdown",
|
||||
"mongo",
|
||||
"notion",
|
||||
"obsidian",
|
||||
"pdf",
|
||||
"text",
|
||||
"node"
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
import { type BaseReader, Document } from "@llamaindex/core/schema";
|
||||
import * as fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { MarkdownReader } from "./markdown";
|
||||
|
||||
export class ObsidianReader implements BaseReader<Document> {
|
||||
protected inputDir: string;
|
||||
protected docs: Document[] = [];
|
||||
|
||||
constructor(inputDir: string) {
|
||||
this.inputDir = inputDir;
|
||||
}
|
||||
|
||||
private async processPath(file: fs.Dirent, filepath: string) {
|
||||
if (file.isDirectory() && !file.name.startsWith(".")) {
|
||||
await this.readFromPath(filepath);
|
||||
} else if (file.isFile() && file.name.endsWith(".md")) {
|
||||
await this.convertToDocuments(filepath);
|
||||
} else {
|
||||
console.log(`Skipping ${filepath}`);
|
||||
}
|
||||
}
|
||||
|
||||
private async readFromPath(dir: string) {
|
||||
const files = await fs.promises.readdir(dir, { withFileTypes: true });
|
||||
for (const file of files) {
|
||||
const filepath = path.join(dir, file.name);
|
||||
await this.processPath(file, filepath);
|
||||
}
|
||||
}
|
||||
|
||||
private async convertToDocuments(filepath: string) {
|
||||
const content = await new MarkdownReader().loadData(filepath);
|
||||
this.docs.push(...content);
|
||||
}
|
||||
|
||||
async loadData(): Promise<Document[]> {
|
||||
await this.readFromPath(this.inputDir);
|
||||
return this.docs;
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user