mirror of
https://github.com/run-llama/LlamaIndexTS.git
synced 2026-07-01 22:14:03 -04:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c2a345ebb1 | |||
| d3fa729a30 | |||
| c7c08005ec | |||
| bb0ae5e321 | |||
| f4588bc770 | |||
| b49037612d | |||
| a87efb91a4 | |||
| 6a4a73760b | |||
| 1564831158 | |||
| 4d94f6e50d | |||
| 7bd5d9340c | |||
| d924c63162 |
@@ -25,4 +25,4 @@ jobs:
|
||||
run: pnpm run build
|
||||
|
||||
- name: Pre Release
|
||||
run: pnpx pkg-pr-new publish ./packages/* ./packages/providers/*
|
||||
run: pnpx pkg-pr-new publish --pnpm ./packages/* ./packages/providers/* ./packages/providers/storage/*
|
||||
|
||||
@@ -83,11 +83,6 @@ jobs:
|
||||
run: pnpm install
|
||||
- name: Build
|
||||
run: pnpm run build
|
||||
- name: Use Build For Examples
|
||||
run: |
|
||||
pnpm link ../packages/llamaindex/
|
||||
cd readers && pnpm link ../../packages/llamaindex/
|
||||
working-directory: ./examples
|
||||
- name: Run Type Check
|
||||
run: pnpm run type-check
|
||||
- name: Run Circular Dependency Check
|
||||
|
||||
+1
-3
@@ -1,3 +1 @@
|
||||
pnpm format
|
||||
pnpm lint
|
||||
npx lint-staged
|
||||
pnpm run lint-staged
|
||||
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
LlamaIndexTS
|
||||
Vendored
+2
-1
@@ -14,5 +14,6 @@
|
||||
"[json]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"prettier.prettierPath": "./node_modules/prettier"
|
||||
"prettier.prettierPath": "./node_modules/prettier",
|
||||
"prettier.configPath": "prettier.config.mjs"
|
||||
}
|
||||
|
||||
@@ -65,44 +65,18 @@ yarn add llamaindex
|
||||
|
||||
See our official document: <https://ts.llamaindex.ai/docs/llamaindex/getting_started/>
|
||||
|
||||
### Tips when using in non-Node.js environments
|
||||
### Adding provider packages
|
||||
|
||||
When you are importing `llamaindex` in a non-Node.js environment(such as Vercel Edge, Cloudflare Workers, etc.)
|
||||
Some classes are not exported from top-level entry file.
|
||||
In most cases, you'll also need to install provider packages to use LlamaIndexTS. These are for adding AI models, file readers for ingestion or storing documents, e.g. in vector databases.
|
||||
|
||||
The reason is that some classes are only compatible with Node.js runtime,(e.g. `PDFReader`) which uses Node.js specific APIs(like `fs`, `child_process`, `crypto`).
|
||||
For example, to use the OpenAI LLM, you would install the following package:
|
||||
|
||||
If you need any of those classes, you have to import them instead directly though their file path in the package.
|
||||
Here's an example for importing the `PineconeVectorStore` class:
|
||||
|
||||
```typescript
|
||||
import { PineconeVectorStore } from "llamaindex/vector-store/PineconeVectorStore";
|
||||
```shell
|
||||
npm install @llamaindex/openai
|
||||
pnpm install @llamaindex/openai
|
||||
yarn add @llamaindex/openai
|
||||
```
|
||||
|
||||
As the `PDFReader` is not working with the Edge runtime, here's how to use the `SimpleDirectoryReader` with the `LlamaParseReader` to load PDFs:
|
||||
|
||||
```typescript
|
||||
import { SimpleDirectoryReader } from "llamaindex/readers/SimpleDirectoryReader";
|
||||
import { LlamaParseReader } from "llamaindex/readers/LlamaParseReader";
|
||||
|
||||
export const DATA_DIR = "./data";
|
||||
|
||||
export async function getDocuments() {
|
||||
const reader = new SimpleDirectoryReader();
|
||||
// Load PDFs using LlamaParseReader
|
||||
return await reader.loadData({
|
||||
directoryPath: DATA_DIR,
|
||||
fileExtToReader: {
|
||||
pdf: new LlamaParseReader({ resultType: "markdown" }),
|
||||
},
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
> _Note_: Reader classes have to be added explictly to the `fileExtToReader` map in the Edge version of the `SimpleDirectoryReader`.
|
||||
|
||||
You'll find a complete example with LlamaIndexTS here: https://github.com/run-llama/create_llama_projects/tree/main/nextjs-edge-llamaparse
|
||||
|
||||
## Playground
|
||||
|
||||
Check out our NextJS playground at https://llama-playground.vercel.app/. The source is available at https://github.com/run-llama/ts-playground
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
# @llamaindex/doc
|
||||
|
||||
## 0.1.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 6a4a737: Remove re-exports from llamaindex main package
|
||||
- f4588bc: Remove readers package from llamaindex
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- c7c0800: fix: fumadoc build fail
|
||||
- a87efb9: docs: update chat engine docs
|
||||
- 7bd5d93: docs: update workflow doc
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
- @llamaindex/core@0.5.0
|
||||
- @llamaindex/cloud@3.0.0
|
||||
- @llamaindex/node-parser@1.0.0
|
||||
- @llamaindex/openai@0.1.52
|
||||
- @llamaindex/readers@2.0.0
|
||||
|
||||
## 0.0.41
|
||||
|
||||
### Patch Changes
|
||||
|
||||
+11
-10
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/doc",
|
||||
"version": "0.0.41",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "pnpm run build:docs && next build",
|
||||
@@ -28,18 +28,19 @@
|
||||
"@radix-ui/react-slot": "^1.1.0",
|
||||
"@radix-ui/react-tooltip": "^1.1.4",
|
||||
"@vercel/functions": "^1.5.0",
|
||||
"@scalar/api-client-react": "^1.1.25",
|
||||
"ai": "^3.4.33",
|
||||
"class-variance-authority": "^0.7.0",
|
||||
"clsx": "2.1.1",
|
||||
"foxact": "^0.2.41",
|
||||
"framer-motion": "^11.11.17",
|
||||
"fumadocs-core": "14.6.0",
|
||||
"fumadocs-docgen": "1.3.2",
|
||||
"fumadocs-mdx": "^11.1.2",
|
||||
"fumadocs-openapi": "^5.8.2",
|
||||
"fumadocs-twoslash": "^2.0.2",
|
||||
"fumadocs-typescript": "^3.0.2",
|
||||
"fumadocs-ui": "14.6.0",
|
||||
"fumadocs-core": "^14.7.7",
|
||||
"fumadocs-docgen": "^1.3.7",
|
||||
"fumadocs-mdx": "^11.5.3",
|
||||
"fumadocs-openapi": "^5.12.0",
|
||||
"fumadocs-twoslash": "^2.0.3",
|
||||
"fumadocs-typescript": "^3.0.3",
|
||||
"fumadocs-ui": "^14.7.7",
|
||||
"hast-util-to-jsx-runtime": "^2.3.2",
|
||||
"llamaindex": "workspace:*",
|
||||
"lucide-react": "^0.460.0",
|
||||
@@ -54,8 +55,8 @@
|
||||
"rehype-katex": "^7.0.1",
|
||||
"remark-math": "^6.0.0",
|
||||
"rimraf": "^6.0.1",
|
||||
"shiki": "1.23.1",
|
||||
"shiki-magic-move": "^0.5.0",
|
||||
"shiki": "^2.3.2",
|
||||
"shiki-magic-move": "^1.0.0",
|
||||
"swr": "^2.2.5",
|
||||
"tailwind-merge": "^2.5.2",
|
||||
"tailwindcss-animate": "^1.0.7",
|
||||
|
||||
@@ -57,4 +57,3 @@ In this example, the Context-Aware Agent uses the retriever to fetch relevant co
|
||||
## Available Context-Aware Agents
|
||||
|
||||
- `OpenAIContextAwareAgent`: A context-aware agent using OpenAI's models.
|
||||
- `AnthropicContextAwareAgent`: A context-aware agent using Anthropic's models.
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
title: Local LLMs
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
|
||||
|
||||
LlamaIndex.TS supports OpenAI and [other remote LLM APIs](other_llms). You can also run a local LLM on your machine!
|
||||
|
||||
## Using a local model via Ollama
|
||||
@@ -24,7 +26,23 @@ The first time you run it will also automatically download and install the model
|
||||
|
||||
### Switch the LLM in your code
|
||||
|
||||
To tell LlamaIndex to use a local LLM, use the `Settings` object:
|
||||
To switch the LLM in your code, you first need to make sure to install the package for the Ollama model provider:
|
||||
|
||||
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
|
||||
```shell tab="npm"
|
||||
npm install @llamaindex/ollama
|
||||
```
|
||||
|
||||
```shell tab="yarn"
|
||||
yarn add @llamaindex/ollama
|
||||
```
|
||||
|
||||
```shell tab="pnpm"
|
||||
pnpm add @llamaindex/ollama
|
||||
```
|
||||
</Tabs>
|
||||
|
||||
Then, to tell LlamaIndex to use a local LLM, use the `Settings` object:
|
||||
|
||||
```javascript
|
||||
Settings.llm = new Ollama({
|
||||
@@ -34,7 +52,25 @@ Settings.llm = new Ollama({
|
||||
|
||||
### Use local embeddings
|
||||
|
||||
If you're doing retrieval-augmented generation, LlamaIndex.TS will also call out to OpenAI to index and embed your data. To be entirely local, you can use a local embedding model like this:
|
||||
If you're doing retrieval-augmented generation, LlamaIndex.TS will also call out to OpenAI to index and embed your data. To be entirely local, you can use a local embedding model from Huggingface like this:
|
||||
|
||||
First install the Huggingface model provider package:
|
||||
|
||||
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
|
||||
```shell tab="npm"
|
||||
npm install @llamaindex/huggingface
|
||||
```
|
||||
|
||||
```shell tab="yarn"
|
||||
yarn add @llamaindex/huggingface
|
||||
```
|
||||
|
||||
```shell tab="pnpm"
|
||||
pnpm add @llamaindex/huggingface
|
||||
```
|
||||
</Tabs>
|
||||
|
||||
And then set the embedding model in your code:
|
||||
|
||||
```javascript
|
||||
Settings.embedModel = new HuggingFaceEmbedding({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Installation
|
||||
description: Install llamaindex by running a single command.
|
||||
description: How to install llamaindex packages.
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
|
||||
|
||||
@@ -70,10 +70,8 @@ In Cloudflare Worker and similar serverless JS environment, you need to be aware
|
||||
|
||||
- Some Node.js modules are not available in Cloudflare Worker, such as `node:fs`, `node:child_process`, `node:cluster`...
|
||||
- You are recommend to design your code using network request, such as use `fetch` API to communicate with database, insteadof a long-running process in Node.js.
|
||||
- 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.
|
||||
- Some of LlamaIndex.TS packages are not available in Cloudflare Worker, for example `@llamaindex/readers` and `@llamaindex/huggingface`.
|
||||
- The main `llamaindex` 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.
|
||||
|
||||
@@ -15,7 +15,7 @@ In LlamaIndex, an agent is a semi-autonomous piece of software powered by an LLM
|
||||
You'll need to have a recent version of [Node.js](https://nodejs.org/en) installed. Then you can install LlamaIndex.TS by running
|
||||
|
||||
```bash
|
||||
npm install llamaindex
|
||||
npm install llamaindex @llamaindex/openai @llamaindex/readers @llamaindex/huggingface
|
||||
```
|
||||
|
||||
## Choose your model
|
||||
|
||||
@@ -40,7 +40,7 @@ We'll be bringing in `SimpleDirectoryReader`, `HuggingFaceEmbedding`, `VectorSto
|
||||
import { FunctionTool, QueryEngineTool, Settings, VectorStoreIndex } from "llamaindex";
|
||||
import { OpenAI, OpenAIAgent } from "@llamaindex/openai";
|
||||
import { HuggingFaceEmbedding } from "@llamaindex/huggingface";
|
||||
import { SimpleDirectoryReader } from "llamaindex";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
```
|
||||
|
||||
### Add an embedding model
|
||||
|
||||
@@ -10,7 +10,7 @@ import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
|
||||
<Accordions>
|
||||
<Accordion title="Install @llamaindex/readers">
|
||||
|
||||
If you want to only use reader modules, you can install `@llamaindex/readers`
|
||||
If you want to use the reader module, you need to install `@llamaindex/readers`
|
||||
|
||||
<Tabs groupId="install-llamaindex" items={["npm", "yarn", "pnpm"]} persist>
|
||||
```shell tab="npm"
|
||||
@@ -31,72 +31,73 @@ import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
|
||||
|
||||
We offer readers for different file formats.
|
||||
|
||||
<Tabs groupId="llamaindex-or-readers" items={["llamaindex", "@llamaindex/readers"]} persist>
|
||||
```ts twoslash tab="llamaindex"
|
||||
import { CSVReader } from '@llamaindex/readers/csv'
|
||||
import { PDFReader } from '@llamaindex/readers/pdf'
|
||||
import { JSONReader } from '@llamaindex/readers/json'
|
||||
import { MarkdownReader } from '@llamaindex/readers/markdown'
|
||||
import { HTMLReader } from '@llamaindex/readers/html'
|
||||
// you can find more readers in the documentation
|
||||
```
|
||||
|
||||
```ts twoslash tab="@llamaindex/readers"
|
||||
import { CSVReader } from '@llamaindex/readers/csv'
|
||||
import { PDFReader } from '@llamaindex/readers/pdf'
|
||||
import { JSONReader } from '@llamaindex/readers/json'
|
||||
import { MarkdownReader } from '@llamaindex/readers/markdown'
|
||||
import { HTMLReader } from '@llamaindex/readers/html'
|
||||
// you can find more readers in the documentation
|
||||
```
|
||||
|
||||
</Tabs>
|
||||
```ts twoslash
|
||||
import { CSVReader } from '@llamaindex/readers/csv'
|
||||
import { PDFReader } from '@llamaindex/readers/pdf'
|
||||
import { JSONReader } from '@llamaindex/readers/json'
|
||||
import { MarkdownReader } from '@llamaindex/readers/markdown'
|
||||
import { HTMLReader } from '@llamaindex/readers/html'
|
||||
// you can find more readers in the documentation
|
||||
```
|
||||
|
||||
## SimpleDirectoryReader
|
||||
|
||||
`SimpleDirectoryReader` is the simplest way to load data from local files into LlamaIndex.
|
||||
|
||||
<Tabs groupId="llamaindex-or-readers" items={["llamaindex", "@llamaindex/readers"]} persist>
|
||||
```ts twoslash
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
|
||||
```ts twoslash tab="llamaindex"
|
||||
import { SimpleDirectoryReader } from "llamaindex";
|
||||
|
||||
const reader = new SimpleDirectoryReader()
|
||||
const documents = await reader.loadData("./data")
|
||||
// ^?
|
||||
const reader = new SimpleDirectoryReader()
|
||||
const documents = await reader.loadData("./data")
|
||||
// ^?
|
||||
|
||||
|
||||
const texts = documents.map(doc => doc.getText())
|
||||
// ^?
|
||||
```
|
||||
|
||||
```ts twoslash tab="@llamaindex/readers"
|
||||
import { SimpleDirectoryReader } from "llamaindex";
|
||||
|
||||
const reader = new SimpleDirectoryReader()
|
||||
const documents = await reader.loadData("./data")
|
||||
// ^?
|
||||
const texts = documents.map(doc => doc.getText())
|
||||
// ^?
|
||||
```
|
||||
|
||||
|
||||
const texts = documents.map(doc => doc.getText())
|
||||
// ^?
|
||||
```
|
||||
## Tips when using in non-Node.js environments
|
||||
|
||||
When using `@llamaindex/readers` in a non-Node.js environment (such as Vercel Edge, Cloudflare Workers, etc.)
|
||||
Some classes are not exported from top-level entry file.
|
||||
|
||||
The reason is that some classes are only compatible with Node.js runtime, (e.g. `PDFReader`) which uses Node.js specific APIs (like `fs`, `child_process`, `crypto`).
|
||||
|
||||
If you need any of those classes, you have to import them instead directly through their file path in the package.
|
||||
|
||||
As the `PDFReader` is not working with the Edge runtime, here's how to use the `SimpleDirectoryReader` with the `LlamaParseReader` to load PDFs:
|
||||
|
||||
```typescript
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import { LlamaParseReader } from "@llamaindex/cloud";
|
||||
|
||||
export const DATA_DIR = "./data";
|
||||
|
||||
export async function getDocuments() {
|
||||
const reader = new SimpleDirectoryReader();
|
||||
// Load PDFs using LlamaParseReader
|
||||
return await reader.loadData({
|
||||
directoryPath: DATA_DIR,
|
||||
fileExtToReader: {
|
||||
pdf: new LlamaParseReader({ resultType: "markdown" }),
|
||||
},
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
> _Note_: Reader classes have to be added explicitly to the `fileExtToReader` map in the Edge version of the `SimpleDirectoryReader`.
|
||||
|
||||
You'll find a complete example with LlamaIndexTS here: https://github.com/run-llama/create_llama_projects/tree/main/nextjs-edge-llamaparse
|
||||
|
||||
</Tabs>
|
||||
|
||||
## Load file natively using Node.js Customization Hooks
|
||||
|
||||
We have a helper utility to allow you to import a file in Node.js script.
|
||||
|
||||
<Tabs groupId="llamaindex-or-readers" items={["llamaindex", "@llamaindex/readers"]} persist>
|
||||
```shell tab="llamaindex"
|
||||
node --import llamaindex/register ./script.js
|
||||
```
|
||||
|
||||
```shell tab="@llamaindex/readers"
|
||||
node --import @llamaindex/readers/node ./script.js
|
||||
```
|
||||
</Tabs>
|
||||
```shell
|
||||
node --import @llamaindex/readers/node ./script.js
|
||||
```
|
||||
|
||||
```ts
|
||||
import csv from './path/to/data.csv';
|
||||
|
||||
@@ -81,7 +81,7 @@ It will split the code by AST nodes and then parse the nodes into a `Document` o
|
||||
import TS from "tree-sitter-typescript";
|
||||
|
||||
const parser = new Parser();
|
||||
parser.setLanguage(TS.typescript);
|
||||
parser.setLanguage(TS.typescript as Parser.Language);
|
||||
const codeSplitter = new CodeSplitter({
|
||||
getParser: () => parser,
|
||||
});
|
||||
@@ -99,7 +99,7 @@ It will split the code by AST nodes and then parse the nodes into a `Document` o
|
||||
import TS from "tree-sitter-typescript";
|
||||
|
||||
const parser = new Parser();
|
||||
parser.setLanguage(TS.typescript);
|
||||
parser.setLanguage(TS.typescript as Parser.Language);
|
||||
const codeSplitter = new CodeSplitter({
|
||||
getParser: () => parser,
|
||||
});
|
||||
|
||||
@@ -20,5 +20,5 @@ LlamaIndex.TS provides tools for beginners, advanced users, and everyone in betw
|
||||
className="w-full h-[440px]"
|
||||
aria-label="LlamaIndex.TS Starter"
|
||||
aria-description="This is a starter example for LlamaIndex.TS, it shows the basic usage of the library."
|
||||
src="https://stackblitz.com/github/run-llama/LlamaIndexTS/tree/main/examples?file=starter.ts"
|
||||
src="https://stackblitz.com/github/run-llama/LlamaIndexTS/tree/main/examples?embed=1&file=starter.ts"
|
||||
/>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"what-is-llamaindex",
|
||||
"index",
|
||||
"getting_started",
|
||||
"migration",
|
||||
"guide",
|
||||
"examples",
|
||||
"modules",
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
---
|
||||
title: Migrating from v0.8 to v0.9
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
|
||||
|
||||
Version 0.9 of LlamaIndex.TS introduces significant architectural changes to improve package size and runtime compatibility. The main goals of this release are:
|
||||
|
||||
1. Reduce the package size of the main `llamaindex` package by moving dependencies into provider packages, making it more suitable for serverless environments
|
||||
2. Enable consistent code across different environments by using unified imports (no separate imports for Node.js and Edge runtimes)
|
||||
|
||||
## Major Changes
|
||||
|
||||
### Installing Provider Packages
|
||||
|
||||
In v0.9, you need to explicitly install the provider packages you want to use. The main `llamaindex` package no longer includes these dependencies by default.
|
||||
|
||||
### Updating Imports
|
||||
|
||||
You'll need to update your imports to get classes directly from their respective provider packages. Here's how to migrate different components:
|
||||
|
||||
### 1. AI Model Providers
|
||||
|
||||
Previously:
|
||||
```typescript
|
||||
import { OpenAI } from "llamaindex";
|
||||
```
|
||||
|
||||
Now:
|
||||
```typescript
|
||||
import { OpenAI } from "@llamaindex/openai";
|
||||
```
|
||||
|
||||
> Note: This examples requires installing the `@llamaindex/openai` package:
|
||||
|
||||
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
|
||||
```shell tab="npm"
|
||||
npm install @llamaindex/openai
|
||||
```
|
||||
|
||||
```shell tab="yarn"
|
||||
yarn add @llamaindex/openai
|
||||
```
|
||||
|
||||
```shell tab="pnpm"
|
||||
pnpm add @llamaindex/openai
|
||||
```
|
||||
</Tabs>
|
||||
|
||||
For more details on available AI model providers and their configuration, see the [LLMs documentation](/docs/llamaindex/modules/llms) and the [Embedding Models documentation](/docs/llamaindex/modules/embeddings).
|
||||
|
||||
### 2. Storage Providers
|
||||
|
||||
Previously:
|
||||
```typescript
|
||||
import { PineconeVectorStore } from "llamaindex";
|
||||
```
|
||||
|
||||
Now:
|
||||
```typescript
|
||||
import { PineconeVectorStore } from "@llamaindex/pinecone";
|
||||
```
|
||||
|
||||
For more information about available storage options, refer to the [Data Stores documentation](/docs/llamaindex/modules/data_stores).
|
||||
|
||||
### 3. Data Loaders
|
||||
|
||||
Previously:
|
||||
```typescript
|
||||
import { SimpleDirectoryReader } from "llamaindex";
|
||||
```
|
||||
|
||||
Now:
|
||||
```typescript
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
```
|
||||
|
||||
For more details about available data loaders and their usage, check the [Loading Data](/docs/llamaindex/guide/loading).
|
||||
|
||||
### 4. Prefer using `llamaindex` instead of `@llamaindex/core`
|
||||
|
||||
`llamaindex` is now re-exporting most of `@llamaindex/core`. To simplify imports, just use `import { ... } from "llamaindex"` instead of `import { ... } from "@llamaindex/core"`. This is possible because `llamaindex` is now a smaller package.
|
||||
|
||||
We might change imports internally in `@llamaindex/core` in the future. Let us know if you're missing something.
|
||||
|
||||
## Benefits of the Changes
|
||||
|
||||
- **Smaller Bundle Size**: By moving dependencies to separate packages, your application only includes the features you actually use
|
||||
- **Runtime Consistency**: The same code works across different environments without environment-specific imports
|
||||
- **Improved Serverless Support**: Reduced package size makes it easier to deploy to serverless environments with size limitations
|
||||
|
||||
## Need Help?
|
||||
|
||||
If you encounter any issues during migration, please:
|
||||
1. Check our [GitHub repository](https://github.com/run-llama/LlamaIndexTS) for the latest updates
|
||||
2. Join our [Discord community](https://discord.gg/dGcwcsnxhU) for support
|
||||
3. Open an issue on GitHub if you find a bug or have a feature request
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "Migration",
|
||||
"description": "Migration between different versions",
|
||||
"pages": ["0.8-to-0.9"]
|
||||
}
|
||||
@@ -12,9 +12,26 @@ const chatEngine = new ContextChatEngine({ retriever });
|
||||
const response = await chatEngine.chat({ message: query });
|
||||
```
|
||||
|
||||
In short, you can use the chat engine by calling `index.asChatEngine()`. It will return a `ContextChatEngine` to start chatting.
|
||||
|
||||
```typescript
|
||||
const chatEngine = index.asChatEngine();
|
||||
```
|
||||
|
||||
You can also pass in options to the chat engine.
|
||||
|
||||
```typescript
|
||||
const chatEngine = index.asChatEngine({
|
||||
similarityTopK: 5,
|
||||
systemPrompt: "You are a helpful assistant.",
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
The `chat` function also supports streaming, just add `stream: true` as an option:
|
||||
|
||||
```typescript
|
||||
const chatEngine = index.asChatEngine();
|
||||
const stream = await chatEngine.chat({ message: query, stream: true });
|
||||
for await (const chunk of stream) {
|
||||
process.stdout.write(chunk.response);
|
||||
|
||||
@@ -34,7 +34,7 @@ import {
|
||||
Settings,
|
||||
} from "llamaindex";
|
||||
import { OpenAI } from "@llamaindex/openai";
|
||||
import { SimpleDirectoryReader } from "llamaindex";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
```
|
||||
|
||||
## Loading Data
|
||||
@@ -124,7 +124,7 @@ import {
|
||||
Settings,
|
||||
} from "llamaindex";
|
||||
import { OpenAI } from "@llamaindex/openai";
|
||||
import { SimpleDirectoryReader } from "llamaindex";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
|
||||
Settings.llm = new OpenAI();
|
||||
Settings.nodeParser = new SentenceSplitter({
|
||||
|
||||
@@ -13,6 +13,22 @@ When a step function is added to a workflow, you need to specify the input and o
|
||||
|
||||
You can create a `Workflow` to do anything! Build an agent, a RAG flow, an extraction flow, or anything else you want.
|
||||
|
||||
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
|
||||
|
||||
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
|
||||
```shell tab="npm"
|
||||
npm install @llamaindex/workflow
|
||||
```
|
||||
|
||||
```shell tab="yarn"
|
||||
yarn add @llamaindex/workflow
|
||||
```
|
||||
|
||||
```shell tab="pnpm"
|
||||
pnpm add @llamaindex/workflow
|
||||
```
|
||||
</Tabs>
|
||||
|
||||
## Getting Started
|
||||
|
||||
As an illustrative example, let's consider a naive workflow where a joke is generated and then critiqued.
|
||||
@@ -34,51 +50,59 @@ Events are user-defined classes that extend `WorkflowEvent` and contain arbitrar
|
||||
```typescript
|
||||
const llm = new OpenAI();
|
||||
...
|
||||
const jokeFlow = new Workflow({ verbose: true });
|
||||
const jokeFlow = new Workflow<unknown, string, string>();
|
||||
```
|
||||
|
||||
Our workflow is implemented by initiating the `Workflow` class. For simplicity, we created a `OpenAI` llm instance.
|
||||
Our workflow is implemented by initiating the `Workflow` class with three generic types: the context type (unknown), input type (string), and output type (string). The context type is `unknown`, as we're not using a shared context in this example.
|
||||
|
||||
For simplicity, we created an `OpenAI` llm instance that we're using for inference in our workflow.
|
||||
|
||||
### Workflow Entry Points
|
||||
|
||||
```typescript
|
||||
const generateJoke = async (_context: Context, ev: StartEvent) => {
|
||||
const prompt = `Write your best joke about ${ev.data.input}.`;
|
||||
const generateJoke = async (_: unknown, ev: StartEvent<string>) => {
|
||||
const prompt = `Write your best joke about ${ev.data}.`;
|
||||
const response = await llm.complete({ prompt });
|
||||
return new JokeEvent({ joke: response.text });
|
||||
};
|
||||
```
|
||||
|
||||
Here, we come to the entry-point of our workflow. While events are user-defined, there are two special-case events, the `StartEvent` and the `StopEvent`. Here, the `StartEvent` signifies where to send the initial workflow input.
|
||||
Here, we come to the entry-point of our workflow. While events are user-defined, there are two special-case events, the `StartEvent` and the `StopEvent`. These events are predefined, but we can specify the payload type using generic types. We're using `StartEvent<string>` to indicate that we're going to send an input of type string.
|
||||
|
||||
The `StartEvent` is a bit of a special object since it can hold arbitrary attributes. Here, we accessed the topic with `ev.data.input`.
|
||||
|
||||
At this point, you may have noticed that we haven't explicitly told the workflow what events are handled by which steps.
|
||||
|
||||
To do so, we use the `addStep` method which adds a step to the workflow. The first argument is the event type that the step will handle, and the second argument is the previously defined step function:
|
||||
To add this step to the workflow, we use the `addStep` method with an object specifying the input and output event types:
|
||||
|
||||
```typescript
|
||||
jokeFlow.addStep(StartEvent, generateJoke);
|
||||
jokeFlow.addStep(
|
||||
{
|
||||
inputs: [StartEvent<string>],
|
||||
outputs: [JokeEvent],
|
||||
},
|
||||
generateJoke
|
||||
);
|
||||
```
|
||||
|
||||
### Workflow Exit Points
|
||||
|
||||
```typescript
|
||||
const critiqueJoke = async (_context: Context, ev: JokeEvent) => {
|
||||
const critiqueJoke = async (_: unknown, ev: JokeEvent) => {
|
||||
const prompt = `Give a thorough critique of the following joke: ${ev.data.joke}`;
|
||||
const response = await llm.complete({ prompt });
|
||||
return new StopEvent({ result: response.text });
|
||||
return new StopEvent(response.text);
|
||||
};
|
||||
```
|
||||
|
||||
Here, we have our second, and last step, in the workflow. We know its the last step because the special `StopEvent` is returned. When the workflow encounters a returned `StopEvent`, it immediately stops the workflow and returns whatever the result was.
|
||||
Here, we have our second and last step in the workflow. We know it's the last step because the special `StopEvent` is returned. When the workflow encounters a returned `StopEvent`, it immediately stops the workflow and returns the result. Note that we're using the generic type `StopEvent<string>` to indicate that we're returning a string.
|
||||
|
||||
In this case, the result is a string, but it could be a map, array, or any other object.
|
||||
|
||||
Don't forget to add the step to the workflow:
|
||||
Add this step to the workflow:
|
||||
|
||||
```typescript
|
||||
jokeFlow.addStep(JokeEvent, critiqueJoke);
|
||||
jokeFlow.addStep(
|
||||
{
|
||||
inputs: [JokeEvent],
|
||||
outputs: [StopEvent<string>],
|
||||
},
|
||||
critiqueJoke
|
||||
);
|
||||
```
|
||||
|
||||
### Running the Workflow
|
||||
@@ -90,42 +114,25 @@ console.log(result.data.result);
|
||||
|
||||
Lastly, we run the workflow. The `.run()` method is async, so we use await here to wait for the result.
|
||||
|
||||
### Validating Workflows
|
||||
## Working with Shared Context/State
|
||||
|
||||
To tell the workflow what events are produced by each step, you can optionally provide a third argument to `addStep` to specify the output event type:
|
||||
Optionally, you can choose to use a shared context between steps by specifying a context type when creating the workflow. Here's an example where multiple steps access a shared state:
|
||||
|
||||
```typescript
|
||||
jokeFlow.addStep(StartEvent, generateJoke, { outputs: JokeEvent });
|
||||
jokeFlow.addStep(JokeEvent, critiqueJoke, { outputs: StopEvent });
|
||||
```
|
||||
import { HandlerContext } from "@llamaindex/workflow";
|
||||
|
||||
To validate a workflow, you need to call the `validate` method:
|
||||
type MyContextData = {
|
||||
query: string;
|
||||
intermediateResults: any[];
|
||||
}
|
||||
|
||||
```typescript
|
||||
jokeFlow.validate();
|
||||
```
|
||||
|
||||
To automatically validate a workflow when you run it, you can set the `validate` flag to `true` at initialization:
|
||||
|
||||
```typescript
|
||||
const jokeFlow = new Workflow({ verbose: true, validate: true });
|
||||
```
|
||||
|
||||
## Working with Global Context/State
|
||||
|
||||
Optionally, you can choose to use global context between steps. For example, maybe multiple steps access the original `query` input from the user. You can store this in global context so that every step has access.
|
||||
|
||||
```typescript
|
||||
import { Context } from "llamaindex";
|
||||
|
||||
const query = async (context: Context, ev: MyEvent) => {
|
||||
const query = async (context: HandlerContext<MyContextData>, ev: MyEvent) => {
|
||||
// get the query from the context
|
||||
const query = context.get("query");
|
||||
const query = context.data.query;
|
||||
// do something with context and event
|
||||
const val = ...
|
||||
const result = ...
|
||||
// store in context
|
||||
context.set("key", val);
|
||||
context.data.intermediateResults.push(val);
|
||||
|
||||
return new StopEvent({ result });
|
||||
};
|
||||
@@ -138,28 +145,15 @@ The context does more than just hold data, it also provides utilities to buffer
|
||||
For example, you might have a step that waits for a query and retrieved nodes before synthesizing a response:
|
||||
|
||||
```typescript
|
||||
const synthesize = async (context: Context, ev: QueryEvent | RetrieveEvent) => {
|
||||
const events = context.collectEvents(ev, [QueryEvent | RetrieveEvent]);
|
||||
if (!events) {
|
||||
return;
|
||||
}
|
||||
const prompt = events
|
||||
.map((event) => {
|
||||
if (event instanceof QueryEvent) {
|
||||
return `Answer this query using the context provided: ${event.data.query}`;
|
||||
} else if (event instanceof RetrieveEvent) {
|
||||
return `Context: ${event.data.context}`;
|
||||
}
|
||||
return "";
|
||||
})
|
||||
.join("\n");
|
||||
|
||||
const synthesize = async (context: Context, ev1: QueryEvent, ev2: RetrieveEvent) => {
|
||||
const subPrompts = [`Answer this query using the context provided: ${ev1.data.query}`, `Context: ${ev2.data.context}`];
|
||||
const prompt = subPrompts.join("\n");
|
||||
const response = await llm.complete({ prompt });
|
||||
return new StopEvent({ result: response.text });
|
||||
};
|
||||
```
|
||||
|
||||
Using `ctx.collectEvents()` we can buffer and wait for ALL expected events to arrive. This function will only return events (in the requested order) once all events have arrived.
|
||||
Passing multiple events, we can buffer and wait for ALL expected events to arrive. The receiving step function will only be called once all events have arrived.
|
||||
|
||||
## Manually Triggering Events
|
||||
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
logs
|
||||
.temp
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @llamaindex/core-e2e
|
||||
|
||||
## 0.1.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 6a4a737: Remove re-exports from llamaindex main package
|
||||
|
||||
## 0.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
# @llamaindex/cloudflare-hono
|
||||
|
||||
## 0.1.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 6a4a737: Remove re-exports from llamaindex main package
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- b490376: Remove deprecated ServiceContext
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloudflare-hono",
|
||||
"version": "0.0.0",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"deploy": "wrangler deploy",
|
||||
|
||||
@@ -17,23 +17,21 @@ app.post("/llm", async (c) => {
|
||||
|
||||
const { message } = await c.req.json();
|
||||
|
||||
const { extractText } = await import("@llamaindex/core/utils");
|
||||
|
||||
const {
|
||||
extractText,
|
||||
QueryEngineTool,
|
||||
serviceContextFromDefaults,
|
||||
VectorStoreIndex,
|
||||
OpenAIAgent,
|
||||
Settings,
|
||||
OpenAI,
|
||||
OpenAIEmbedding,
|
||||
SentenceSplitter,
|
||||
} = await import("llamaindex");
|
||||
|
||||
const { PineconeVectorStore } = await import(
|
||||
"llamaindex/vector-store/PineconeVectorStore"
|
||||
const { OpenAIAgent, OpenAI, OpenAIEmbedding } = await import(
|
||||
"@llamaindex/openai"
|
||||
);
|
||||
|
||||
const llm = new OpenAI({
|
||||
const { PineconeVectorStore } = await import("@llamaindex/pinecone");
|
||||
|
||||
Settings.llm = new OpenAI({
|
||||
model: "gpt-4o-mini",
|
||||
apiKey: c.env.OPENAI_API_KEY,
|
||||
});
|
||||
@@ -43,8 +41,7 @@ app.post("/llm", async (c) => {
|
||||
apiKey: c.env.OPENAI_API_KEY,
|
||||
});
|
||||
|
||||
const serviceContext = serviceContextFromDefaults({
|
||||
llm,
|
||||
Settings.nodeParser = new SentenceSplitter({
|
||||
chunkSize: 8191,
|
||||
chunkOverlap: 0,
|
||||
});
|
||||
@@ -53,7 +50,7 @@ app.post("/llm", async (c) => {
|
||||
namespace: "8xolsn4ulEQGdhnhP76yCzfLHdOZ",
|
||||
});
|
||||
|
||||
const index = await VectorStoreIndex.fromVectorStore(store, serviceContext);
|
||||
const index = await VectorStoreIndex.fromVectorStore(store);
|
||||
|
||||
const retriever = index.asRetriever({
|
||||
similarityTopK: 3,
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @llamaindex/cloudflare-worker-agent-test
|
||||
|
||||
## 0.0.134
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
|
||||
## 0.0.133
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloudflare-worker-agent-test",
|
||||
"version": "0.0.133",
|
||||
"version": "0.0.134",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @llamaindex/llama-parse-browser-test
|
||||
|
||||
## 0.0.45
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @llamaindex/cloud@3.0.0
|
||||
|
||||
## 0.0.44
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/llama-parse-browser-test",
|
||||
"private": true,
|
||||
"version": "0.0.44",
|
||||
"version": "0.0.45",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @llamaindex/next-agent-test
|
||||
|
||||
## 0.1.134
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
|
||||
## 0.1.133
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-agent-test",
|
||||
"version": "0.1.133",
|
||||
"version": "0.1.134",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# test-edge-runtime
|
||||
|
||||
## 0.1.133
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
|
||||
## 0.1.132
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/nextjs-edge-runtime-test",
|
||||
"version": "0.1.132",
|
||||
"version": "0.1.133",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# @llamaindex/next-node-runtime
|
||||
|
||||
## 0.1.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 6a4a737: Remove re-exports from llamaindex main package
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
- @llamaindex/huggingface@0.0.36
|
||||
- @llamaindex/readers@2.0.0
|
||||
|
||||
## 0.0.114
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/next-node-runtime-test",
|
||||
"version": "0.0.114",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
@@ -9,6 +9,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"llamaindex": "workspace:*",
|
||||
"@llamaindex/huggingface": "workspace:*",
|
||||
"@llamaindex/readers": "workspace:*",
|
||||
"next": "15.0.3",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1"
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
"use server";
|
||||
import { HuggingFaceEmbedding } from "@llamaindex/huggingface";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import {
|
||||
OpenAI,
|
||||
OpenAIAgent,
|
||||
QueryEngineTool,
|
||||
Settings,
|
||||
SimpleDirectoryReader,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
import { HuggingFaceEmbedding } from "llamaindex/embeddings/HuggingFaceEmbedding";
|
||||
|
||||
Settings.llm = new OpenAI({
|
||||
apiKey: process.env.NEXT_PUBLIC_OPENAI_KEY ?? "FAKE_KEY_TO_PASS_TESTS",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @llamaindex/waku-query-engine-test
|
||||
|
||||
## 0.0.134
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
|
||||
## 0.0.133
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/waku-query-engine-test",
|
||||
"version": "0.0.133",
|
||||
"version": "0.0.134",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
@@ -9,6 +9,7 @@
|
||||
"start": "waku start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@llamaindex/env": "workspace:*",
|
||||
"llamaindex": "workspace:*",
|
||||
"react": "19.0.0-rc-5c56b873-20241107",
|
||||
"react-dom": "19.0.0-rc-5c56b873-20241107",
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
"use server";
|
||||
import { fs } from "@llamaindex/env";
|
||||
import { BaseQueryEngine, Document, VectorStoreIndex } from "llamaindex";
|
||||
import { readFile } from "node:fs/promises";
|
||||
|
||||
let _queryEngine: BaseQueryEngine;
|
||||
|
||||
async function lazyLoadQueryEngine() {
|
||||
if (!_queryEngine) {
|
||||
const path = "node_modules/llamaindex/examples/abramov.txt";
|
||||
|
||||
const essay = await readFile(path, "utf-8");
|
||||
const essay = await fs.readFile(path, "utf-8");
|
||||
|
||||
// Create Document object with essay
|
||||
const document = new Document({ text: essay, id_: path });
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Anthropic, AnthropicAgent } from "@llamaindex/anthropic";
|
||||
import { extractText } from "@llamaindex/core/utils";
|
||||
import { consola } from "consola";
|
||||
import { Anthropic, FunctionTool, Settings, type LLM } from "llamaindex";
|
||||
import { AnthropicAgent } from "llamaindex/agent/anthropic";
|
||||
import { FunctionTool, Settings, type LLM } from "llamaindex";
|
||||
import { ok } from "node:assert";
|
||||
import { beforeEach, test } from "node:test";
|
||||
import { getWeatherTool, sumNumbersTool } from "./fixtures/tools.js";
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ClipEmbedding } from "@llamaindex/clip";
|
||||
import type { LoadTransformerEvent } from "@llamaindex/env/multi-model";
|
||||
import { setTransformers } from "@llamaindex/env/multi-model";
|
||||
import { ClipEmbedding, ImageNode, Settings } from "llamaindex";
|
||||
import { ImageNode, Settings } from "llamaindex";
|
||||
import assert from "node:assert";
|
||||
import { type Mock, test } from "node:test";
|
||||
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
import { execSync } from "node:child_process";
|
||||
import { mkdir, rm, writeFile } from "node:fs/promises";
|
||||
import { resolve } from "node:path";
|
||||
import { test } from "node:test";
|
||||
import { testRootDir } from "./utils.js";
|
||||
|
||||
await test("cjs/esm dual module check", async (t) => {
|
||||
const esmImports = `import fs from 'node:fs/promises'
|
||||
import { Document, MetadataMode, VectorStoreIndex } from 'llamaindex'
|
||||
import { OpenAIEmbedding } from '@llamaindex/openai'
|
||||
import { Settings } from '@llamaindex/core/global'`;
|
||||
const cjsRequire = `const fs = require('fs').promises
|
||||
const { Document, MetadataMode, VectorStoreIndex } = require('llamaindex')
|
||||
const { OpenAIEmbedding } = require('@llamaindex/openai')
|
||||
const { Settings } = require('@llamaindex/core/global')`;
|
||||
const mainCode = `
|
||||
async function main() {
|
||||
Settings.embedModel = new OpenAIEmbedding({
|
||||
model: 'text-embedding-3-small',
|
||||
apiKey: '${process.env.OPENAI_API_KEY}',
|
||||
})
|
||||
const model = Settings.embedModel
|
||||
if (model == null) {
|
||||
process.exit(-1)
|
||||
}
|
||||
}
|
||||
main().catch(console.error)`;
|
||||
t.before(async () => {
|
||||
await mkdir(resolve(testRootDir, ".temp"), {
|
||||
recursive: true,
|
||||
mode: 0o755,
|
||||
});
|
||||
});
|
||||
|
||||
t.after(async () => {
|
||||
await rm(resolve(testRootDir, ".temp"), {
|
||||
recursive: true,
|
||||
force: true,
|
||||
});
|
||||
});
|
||||
|
||||
await t.test("cjs", async () => {
|
||||
const cjsCode = `${cjsRequire}\n${mainCode}`;
|
||||
const filePath = resolve(
|
||||
testRootDir,
|
||||
".temp",
|
||||
`${crypto.randomUUID()}.cjs`,
|
||||
);
|
||||
await writeFile(filePath, cjsCode, "utf-8");
|
||||
|
||||
execSync(`${process.argv[0]} ${filePath}`, {
|
||||
cwd: process.cwd(),
|
||||
});
|
||||
});
|
||||
|
||||
await t.test("esm", async () => {
|
||||
const esmCode = `${esmImports}\n${mainCode}`;
|
||||
const filePath = resolve(
|
||||
testRootDir,
|
||||
".temp",
|
||||
`${crypto.randomUUID()}.mjs`,
|
||||
);
|
||||
await writeFile(filePath, esmCode, "utf-8");
|
||||
|
||||
execSync(`${process.argv[0]} ${filePath}`, {
|
||||
cwd: process.cwd(),
|
||||
});
|
||||
});
|
||||
|
||||
const specialConditions = ["edge-light", "workerd", "react-server"];
|
||||
for (const condition of specialConditions) {
|
||||
await t.test(condition, async () => {
|
||||
const esmCode = `${esmImports}\n${mainCode}`;
|
||||
const filePath = resolve(
|
||||
testRootDir,
|
||||
".temp",
|
||||
`${crypto.randomUUID()}.mjs`,
|
||||
);
|
||||
await writeFile(filePath, esmCode, "utf-8");
|
||||
|
||||
execSync(`${process.argv[0]} ${filePath} -C ${condition}`, {
|
||||
cwd: process.cwd(),
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
import { PGVectorStore } from "@llamaindex/postgres";
|
||||
import { config } from "dotenv";
|
||||
import { Document, VectorStoreQueryMode } from "llamaindex";
|
||||
import { PGVectorStore } from "llamaindex/vector-store/PGVectorStore";
|
||||
import assert from "node:assert";
|
||||
import { test } from "node:test";
|
||||
import pg from "pg";
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import { Document, MetadataMode } from "@llamaindex/core/schema";
|
||||
import { OpenAIEmbedding } from "@llamaindex/openai";
|
||||
import { PineconeVectorStore } from "@llamaindex/pinecone";
|
||||
import { config } from "dotenv";
|
||||
import {
|
||||
OpenAIEmbedding,
|
||||
PineconeVectorStore,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
import { VectorStoreIndex } from "llamaindex";
|
||||
import assert from "node:assert";
|
||||
import { test } from "node:test";
|
||||
|
||||
|
||||
+5
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/e2e",
|
||||
"private": true,
|
||||
"version": "0.0.8",
|
||||
"version": "0.1.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"e2e": "node --import tsx --import ./mock-register.js --test ./node/**/*.e2e.ts",
|
||||
@@ -14,6 +14,10 @@
|
||||
"@llamaindex/env": "workspace:*",
|
||||
"@llamaindex/ollama": "workspace:*",
|
||||
"@llamaindex/openai": "workspace:*",
|
||||
"@llamaindex/pinecone": "workspace:*",
|
||||
"@llamaindex/postgres": "workspace:*",
|
||||
"@llamaindex/clip": "workspace:*",
|
||||
"@llamaindex/anthropic": "workspace:*",
|
||||
"@types/node": "^22.9.0",
|
||||
"@types/pg": "^8.11.8",
|
||||
"@huggingface/transformers": "^3.0.2",
|
||||
|
||||
@@ -1,5 +1,49 @@
|
||||
# examples
|
||||
|
||||
## 0.2.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 6a4a737: Remove re-exports from llamaindex main package
|
||||
- f4588bc: Remove readers package from llamaindex
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- b490376: Remove deprecated ServiceContext
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- @llamaindex/milvus@0.1.0
|
||||
- @llamaindex/qdrant@0.1.0
|
||||
- @llamaindex/azure@0.1.0
|
||||
- @llamaindex/anthropic@0.1.0
|
||||
- llamaindex@0.9.0
|
||||
- @llamaindex/cloud@3.0.0
|
||||
- @llamaindex/node-parser@1.0.0
|
||||
- @llamaindex/clip@0.0.36
|
||||
- @llamaindex/cohere@0.0.5
|
||||
- @llamaindex/deepinfra@0.0.36
|
||||
- @llamaindex/google@0.0.7
|
||||
- @llamaindex/huggingface@0.0.36
|
||||
- @llamaindex/mistral@0.0.5
|
||||
- @llamaindex/mixedbread@0.0.5
|
||||
- @llamaindex/ollama@0.0.40
|
||||
- @llamaindex/openai@0.1.52
|
||||
- @llamaindex/portkey-ai@0.0.33
|
||||
- @llamaindex/replicate@0.0.33
|
||||
- @llamaindex/astra@0.0.5
|
||||
- @llamaindex/chroma@0.0.5
|
||||
- @llamaindex/mongodb@0.0.5
|
||||
- @llamaindex/pinecone@0.0.5
|
||||
- @llamaindex/postgres@0.0.33
|
||||
- @llamaindex/upstash@0.0.5
|
||||
- @llamaindex/weaviate@0.0.5
|
||||
- @llamaindex/vercel@0.0.11
|
||||
- @llamaindex/readers@2.0.0
|
||||
- @llamaindex/groq@0.0.51
|
||||
- @llamaindex/vllm@0.0.22
|
||||
|
||||
## 0.1.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import { OpenAIAgent } from "@llamaindex/openai";
|
||||
import {
|
||||
QueryEngineTool,
|
||||
SimpleDirectoryReader,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import { QueryEngineTool, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
async function main() {
|
||||
// Load the documents
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { OpenAIAgent } from "@llamaindex/openai";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import {
|
||||
FunctionTool,
|
||||
MetadataMode,
|
||||
NodeWithScore,
|
||||
SimpleDirectoryReader,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import { OpenAIAgent } from "@llamaindex/openai";
|
||||
import {
|
||||
QueryEngineTool,
|
||||
SimpleDirectoryReader,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import { QueryEngineTool, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
async function main() {
|
||||
// Load the documents
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { AstraDBVectorStore } from "@llamaindex/astra";
|
||||
import { VectorStoreIndex, serviceContextFromDefaults } from "llamaindex";
|
||||
import { VectorStoreIndex } from "llamaindex";
|
||||
|
||||
const collectionName = "movie_reviews";
|
||||
|
||||
@@ -8,8 +8,7 @@ async function main() {
|
||||
const astraVS = new AstraDBVectorStore({ contentKey: "reviewtext" });
|
||||
await astraVS.connect(collectionName);
|
||||
|
||||
const ctx = serviceContextFromDefaults();
|
||||
const index = await VectorStoreIndex.fromVectorStore(astraVS, ctx);
|
||||
const index = await VectorStoreIndex.fromVectorStore(astraVS);
|
||||
|
||||
const retriever = await index.asRetriever({ similarityTopK: 20 });
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
import { Document, KeywordTableIndex } from "llamaindex";
|
||||
import essay from "../essay";
|
||||
|
||||
async function main() {
|
||||
const document = new Document({ text: essay });
|
||||
const index = await KeywordTableIndex.fromDocuments([document]);
|
||||
const chatEngine = index.asChatEngine();
|
||||
|
||||
const response = await chatEngine.chat({
|
||||
message: "What is Harsh Mistress?",
|
||||
});
|
||||
console.log(response.message.content);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -0,0 +1,17 @@
|
||||
import { Document, SummaryIndex, SummaryRetrieverMode } from "llamaindex";
|
||||
import essay from "../essay";
|
||||
|
||||
async function main() {
|
||||
const document = new Document({ text: essay });
|
||||
const index = await SummaryIndex.fromDocuments([document]);
|
||||
const chatEngine = index.asChatEngine({
|
||||
mode: SummaryRetrieverMode.LLM,
|
||||
});
|
||||
|
||||
const response = await chatEngine.chat({
|
||||
message: "Summary about the author",
|
||||
});
|
||||
console.log(response.message.content);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -0,0 +1,15 @@
|
||||
import { Document, VectorStoreIndex } from "llamaindex";
|
||||
import essay from "../essay";
|
||||
|
||||
async function main() {
|
||||
const document = new Document({ text: essay });
|
||||
const index = await VectorStoreIndex.fromDocuments([document]);
|
||||
const chatEngine = index.asChatEngine({ similarityTopK: 5 });
|
||||
|
||||
const response = await chatEngine.chat({
|
||||
message: "What did I work on in February 2021?",
|
||||
});
|
||||
console.log(response.message.content);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -1,4 +1,4 @@
|
||||
import { SimpleDirectoryReader } from "llamaindex";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
|
||||
function callback(
|
||||
category: string,
|
||||
|
||||
+1
-2
@@ -30,13 +30,12 @@ async function main() {
|
||||
|
||||
// Split text and create embeddings. Store them in a VectorStoreIndex
|
||||
// var storageContext = await storageContextFromDefaults({});
|
||||
// var serviceContext = serviceContextFromDefaults({});
|
||||
// const docStore = storageContext.docStore;
|
||||
|
||||
// for (const doc of documents) {
|
||||
// docStore.setDocumentHash(doc.id_, doc.hash);
|
||||
// }
|
||||
// const nodes = serviceContext.nodeParser.getNodesFromDocuments(documents);
|
||||
// const nodes = Settings.nodeParser.getNodesFromDocuments(documents);
|
||||
// console.log(nodes);
|
||||
|
||||
//
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import {
|
||||
ImageDocument,
|
||||
JinaAIEmbedding,
|
||||
similarity,
|
||||
SimilarityType,
|
||||
SimpleDirectoryReader,
|
||||
} from "llamaindex";
|
||||
import path from "path";
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Settings, SimpleDirectoryReader, VectorStoreIndex } from "llamaindex";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import { Settings, VectorStoreIndex } from "llamaindex";
|
||||
import path from "path";
|
||||
import { getStorageContext } from "./storage";
|
||||
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
import { storageContextFromDefaults } from "llamaindex";
|
||||
import { ClipEmbedding } from "@llamaindex/clip";
|
||||
import { path } from "@llamaindex/env";
|
||||
import { SimpleVectorStore, storageContextFromDefaults } from "llamaindex";
|
||||
|
||||
// set up store context with two vector stores, one for text, the other for images
|
||||
export async function getStorageContext() {
|
||||
return await storageContextFromDefaults({
|
||||
persistDir: "storage",
|
||||
storeImages: true,
|
||||
// if storeImages is true, the following vector store will be added
|
||||
// vectorStores: {
|
||||
// IMAGE: SimpleVectorStore.fromPersistDir(
|
||||
// `${persistDir}/images`,
|
||||
// fs,
|
||||
// new ClipEmbedding(),
|
||||
// ),
|
||||
// },
|
||||
vectorStores: {
|
||||
IMAGE: await SimpleVectorStore.fromPersistDir(
|
||||
path.join("storage", "images"),
|
||||
new ClipEmbedding(),
|
||||
),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
+1
-2
@@ -1,5 +1,4 @@
|
||||
import { OllamaEmbedding } from "@llamaindex/ollama";
|
||||
import { Ollama } from "llamaindex/llm/ollama";
|
||||
import { Ollama, OllamaEmbedding } from "@llamaindex/ollama";
|
||||
|
||||
(async () => {
|
||||
const llm = new Ollama({
|
||||
|
||||
+37
-36
@@ -1,63 +1,64 @@
|
||||
{
|
||||
"name": "@llamaindex/examples",
|
||||
"version": "0.2.0",
|
||||
"private": true,
|
||||
"version": "0.1.3",
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"start": "tsx ./starter.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/openai": "^1.0.5",
|
||||
"@azure/cosmos": "^4.1.1",
|
||||
"@azure/identity": "^4.4.1",
|
||||
"@azure/search-documents": "^12.1.0",
|
||||
"@llamaindex/vercel": "^0.0.10",
|
||||
"@llamaindex/anthropic": "^0.1.0",
|
||||
"@llamaindex/astra": "^0.0.5",
|
||||
"@llamaindex/azure": "^0.1.0",
|
||||
"@llamaindex/chroma": "^0.0.5",
|
||||
"@llamaindex/clip": "^0.0.36",
|
||||
"@llamaindex/cloud": "^3.0.0",
|
||||
"@llamaindex/cohere": "^0.0.5",
|
||||
"@llamaindex/deepinfra": "^0.0.36",
|
||||
"@llamaindex/env": "^0.1.27",
|
||||
"@llamaindex/google": "^0.0.7",
|
||||
"@llamaindex/groq": "^0.0.51",
|
||||
"@llamaindex/huggingface": "^0.0.36",
|
||||
"@llamaindex/milvus": "^0.1.0",
|
||||
"@llamaindex/mistral": "^0.0.5",
|
||||
"@llamaindex/mixedbread": "^0.0.5",
|
||||
"@llamaindex/mongodb": "^0.0.5",
|
||||
"@llamaindex/node-parser": "^1.0.0",
|
||||
"@llamaindex/ollama": "^0.0.40",
|
||||
"@llamaindex/openai": "^0.1.52",
|
||||
"@llamaindex/pinecone": "^0.0.5",
|
||||
"@llamaindex/portkey-ai": "^0.0.33",
|
||||
"@llamaindex/postgres": "^0.0.33",
|
||||
"@llamaindex/qdrant": "^0.1.0",
|
||||
"@llamaindex/readers": "^2.0.0",
|
||||
"@llamaindex/replicate": "^0.0.33",
|
||||
"@llamaindex/upstash": "^0.0.5",
|
||||
"@llamaindex/vercel": "^0.0.11",
|
||||
"@llamaindex/vllm": "^0.0.22",
|
||||
"@llamaindex/weaviate": "^0.0.5",
|
||||
"@llamaindex/workflow": "^0.0.10",
|
||||
"@notionhq/client": "^2.2.15",
|
||||
"@pinecone-database/pinecone": "^4.0.0",
|
||||
"@vercel/postgres": "^0.10.0",
|
||||
"ai": "^4.0.0",
|
||||
"ajv": "^8.17.1",
|
||||
"commander": "^12.1.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"js-tiktoken": "^1.0.14",
|
||||
"llamaindex": "^0.8.37",
|
||||
"llamaindex": "^0.9.0",
|
||||
"mongodb": "6.7.0",
|
||||
"postgres": "^3.4.4",
|
||||
"ajv": "^8.17.1",
|
||||
"wikipedia": "^2.1.2",
|
||||
"@llamaindex/openai": "workspace:*",
|
||||
"@llamaindex/cloud": "workspace:*",
|
||||
"@llamaindex/anthropic": "workspace:*",
|
||||
"@llamaindex/clip": "workspace:*",
|
||||
"@llamaindex/azure": "workspace:*",
|
||||
"@llamaindex/deepinfra": "workspace:*",
|
||||
"@llamaindex/groq": "workspace:*",
|
||||
"@llamaindex/huggingface": "workspace:*",
|
||||
"@llamaindex/node-parser": "workspace:*",
|
||||
"@llamaindex/ollama": "workspace:*",
|
||||
"@llamaindex/portkey-ai": "workspace:*",
|
||||
"@llamaindex/readers": "workspace:*",
|
||||
"@llamaindex/replicate": "workspace:*",
|
||||
"@llamaindex/vllm": "workspace:*",
|
||||
"@llamaindex/postgres": "workspace:*",
|
||||
"@llamaindex/astra": "workspace:*",
|
||||
"@llamaindex/milvus": "workspace:*",
|
||||
"@llamaindex/chroma": "workspace:*",
|
||||
"@llamaindex/mongodb": "workspace:*",
|
||||
"@llamaindex/pinecone": "workspace:*",
|
||||
"@llamaindex/qdrant": "workspace:*",
|
||||
"@llamaindex/upstash": "workspace:*",
|
||||
"@llamaindex/weaviate": "workspace:*",
|
||||
"@llamaindex/google": "workspace:*",
|
||||
"@llamaindex/mistral": "workspace:*",
|
||||
"@llamaindex/mixedbread": "workspace:*",
|
||||
"@llamaindex/cohere": "workspace:*"
|
||||
"wikipedia": "^2.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.9.0",
|
||||
"tsx": "^4.19.0",
|
||||
"typescript": "^5.7.2"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"start": "tsx ./starter.ts"
|
||||
},
|
||||
"stackblitz": {
|
||||
"startCommand": "npm start"
|
||||
}
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
// load-docs.ts
|
||||
import { PineconeVectorStore } from "@llamaindex/pinecone";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import fs from "fs/promises";
|
||||
import {
|
||||
SimpleDirectoryReader,
|
||||
storageContextFromDefaults,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
import { storageContextFromDefaults, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
async function getSourceFilenames(sourceDir: string) {
|
||||
return await fs
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
"start:obsidian": "node --import tsx ./src/obsidian.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@llamaindex/readers": "*",
|
||||
"llamaindex": "*",
|
||||
"@llamaindex/cloud": "*"
|
||||
"@llamaindex/cloud": "workspace:* || ^2.0.24",
|
||||
"@llamaindex/readers": "workspace:* || ^1.0.25",
|
||||
"llamaindex": "workspace:* || ^0.8.37"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.9.0",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { TextFileReader } from "@llamaindex/readers/text";
|
||||
import type { Document, Metadata } from "llamaindex";
|
||||
import {
|
||||
FILE_EXT_TO_READER,
|
||||
FileReader,
|
||||
SimpleDirectoryReader,
|
||||
} from "llamaindex";
|
||||
} from "@llamaindex/readers/directory";
|
||||
import { TextFileReader } from "@llamaindex/readers/text";
|
||||
import type { Document, Metadata } from "llamaindex";
|
||||
import { FileReader } from "llamaindex";
|
||||
|
||||
class ZipReader extends FileReader {
|
||||
loadDataAsContent(fileContent: Uint8Array): Promise<Document<Metadata>[]> {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { LlamaParseReader } from "@llamaindex/cloud";
|
||||
import { SimpleDirectoryReader, VectorStoreIndex } from "llamaindex";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import { VectorStoreIndex } from "llamaindex";
|
||||
|
||||
async function main() {
|
||||
const reader = new SimpleDirectoryReader();
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
import { SimpleDirectoryReader } from "llamaindex";
|
||||
// or
|
||||
// import { SimpleDirectoryReader } from 'llamaindex'
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
|
||||
const reader = new SimpleDirectoryReader();
|
||||
const documents = await reader.loadData("../data");
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { OpenAI } from "@llamaindex/openai";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import {
|
||||
RouterQueryEngine,
|
||||
SentenceSplitter,
|
||||
Settings,
|
||||
SimpleDirectoryReader,
|
||||
SummaryIndex,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
|
||||
@@ -14,6 +14,7 @@ import {
|
||||
MetadataIndexFieldType,
|
||||
} from "@llamaindex/azure";
|
||||
import { OpenAI, OpenAIEmbedding } from "@llamaindex/openai";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import dotenv from "dotenv";
|
||||
import {
|
||||
Document,
|
||||
@@ -22,7 +23,6 @@ import {
|
||||
Metadata,
|
||||
NodeWithScore,
|
||||
Settings,
|
||||
SimpleDirectoryReader,
|
||||
storageContextFromDefaults,
|
||||
TextNode,
|
||||
VectorStoreIndex,
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
// load-docs.ts
|
||||
import { PGVectorStore } from "@llamaindex/postgres";
|
||||
import {
|
||||
SimpleDirectoryReader,
|
||||
storageContextFromDefaults,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import { storageContextFromDefaults, VectorStoreIndex } from "llamaindex";
|
||||
import fs from "node:fs/promises";
|
||||
|
||||
async function getSourceFilenames(sourceDir: string) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { PGVectorStore } from "@llamaindex/postgres";
|
||||
import dotenv from "dotenv";
|
||||
import { Document, VectorStoreQueryMode } from "llamaindex";
|
||||
import { PGVectorStore } from "llamaindex/vector-store/PGVectorStore";
|
||||
import postgres from "postgres";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { PGVectorStore } from "@llamaindex/postgres";
|
||||
import { VectorStoreIndex } from "llamaindex";
|
||||
import { PGVectorStore } from "llamaindex/vector-store/PGVectorStore";
|
||||
|
||||
async function main() {
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
import { PGVectorStore } from "@llamaindex/postgres";
|
||||
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
|
||||
import dotenv from "dotenv";
|
||||
import {
|
||||
SimpleDirectoryReader,
|
||||
storageContextFromDefaults,
|
||||
VectorStoreIndex,
|
||||
} from "llamaindex";
|
||||
import { storageContextFromDefaults, VectorStoreIndex } from "llamaindex";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// https://vercel.com/docs/storage/vercel-postgres/sdk
|
||||
import { PGVectorStore } from "@llamaindex/postgres";
|
||||
import { sql } from "@vercel/postgres";
|
||||
import dotenv from "dotenv";
|
||||
import { Document, VectorStoreQueryMode } from "llamaindex";
|
||||
import { PGVectorStore } from "llamaindex/vector-store/PGVectorStore";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
|
||||
+10
-4
@@ -2,8 +2,9 @@
|
||||
"name": "@llamaindex/monorepo",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "turbo run build --filter=\"./packages/*\" --filter=\"./packages/providers/*\"",
|
||||
"dev": "turbo run dev --filter=\"./packages/*\" --filter=\"./packages/providers/*\"",
|
||||
"clean": "find . -type d \\( -name .turbo -o -name node_modules -o -name dist -o -name .next -o -name lib \\) -exec rm -rf {} +",
|
||||
"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",
|
||||
@@ -15,7 +16,8 @@
|
||||
"release": "pnpm run build && changeset publish",
|
||||
"release-snapshot": "pnpm run build && changeset publish --tag snapshot",
|
||||
"new-version": "changeset version && pnpm format:write && pnpm run build",
|
||||
"new-snapshot": "pnpm run build && changeset version --snapshot"
|
||||
"new-snapshot": "pnpm run build && changeset version --snapshot",
|
||||
"lint-staged": "lint-staged"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@changesets/cli": "^2.27.5",
|
||||
@@ -36,6 +38,10 @@
|
||||
},
|
||||
"packageManager": "pnpm@9.12.3",
|
||||
"lint-staged": {
|
||||
"(!apps/docs/i18n/**/docusaurus-plugin-content-docs/current/api/*).{js,jsx,ts,tsx,md}": "prettier --write"
|
||||
"*.{js,jsx,ts,tsx}": [
|
||||
"prettier --check",
|
||||
"eslint"
|
||||
],
|
||||
"*.{json,md}": "prettier --check"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @llamaindex/autotool
|
||||
|
||||
## 6.0.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
|
||||
## 5.0.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @llamaindex/autotool-01-node-example
|
||||
|
||||
## 0.0.81
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
- @llamaindex/autotool@6.0.0
|
||||
|
||||
## 0.0.80
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
"scripts": {
|
||||
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
|
||||
},
|
||||
"version": "0.0.80"
|
||||
"version": "0.0.81"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @llamaindex/autotool-02-next-example
|
||||
|
||||
## 0.1.125
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
- @llamaindex/autotool@6.0.0
|
||||
|
||||
## 0.1.124
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -82,11 +82,8 @@
|
||||
}
|
||||
.background-gradient {
|
||||
background-color: #fff;
|
||||
background-image: radial-gradient(
|
||||
at 21% 11%,
|
||||
rgba(186, 186, 233, 0.53) 0,
|
||||
transparent 50%
|
||||
),
|
||||
background-image:
|
||||
radial-gradient(at 21% 11%, rgba(186, 186, 233, 0.53) 0, transparent 50%),
|
||||
radial-gradient(at 85% 0, hsla(46, 57%, 78%, 0.52) 0, transparent 50%),
|
||||
radial-gradient(at 91% 36%, rgba(194, 213, 255, 0.68) 0, transparent 50%),
|
||||
radial-gradient(at 8% 40%, rgba(251, 218, 239, 0.46) 0, transparent 50%);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/autotool-02-next-example",
|
||||
"private": true,
|
||||
"version": "0.1.124",
|
||||
"version": "0.1.125",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
{
|
||||
"name": "@llamaindex/autotool",
|
||||
"type": "module",
|
||||
"version": "5.0.37",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/autotool"
|
||||
},
|
||||
"version": "6.0.0",
|
||||
"description": "auto transpile your JS function to LLM Agent compatible",
|
||||
"files": [
|
||||
"dist",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @llamaindex/cloud
|
||||
|
||||
## 3.0.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- @llamaindex/core@0.5.0
|
||||
|
||||
## 2.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@llamaindex/cloud",
|
||||
"version": "2.0.24",
|
||||
"version": "3.0.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
@@ -60,7 +60,7 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/cloud"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @llamaindex/community
|
||||
|
||||
## 0.0.82
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- @llamaindex/core@0.5.0
|
||||
|
||||
## 0.0.81
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/community",
|
||||
"description": "Community package for LlamaIndexTS",
|
||||
"version": "0.0.81",
|
||||
"version": "0.0.82",
|
||||
"type": "module",
|
||||
"types": "dist/type/index.d.ts",
|
||||
"main": "dist/cjs/index.js",
|
||||
@@ -34,7 +34,7 @@
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/community"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @llamaindex/core
|
||||
|
||||
## 0.5.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 6a4a737: Remove re-exports from llamaindex main package
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- d924c63: feat: asChatEngine function for index
|
||||
|
||||
## 0.4.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/core",
|
||||
"type": "module",
|
||||
"version": "0.4.23",
|
||||
"version": "0.5.0",
|
||||
"description": "LlamaIndex Core Module",
|
||||
"exports": {
|
||||
"./agent": {
|
||||
@@ -386,7 +386,7 @@
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"directory": "packages/core",
|
||||
"url": "https://github.com/run-llama/LlamaIndexTS.git"
|
||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@edge-runtime/vm": "^4.0.4",
|
||||
|
||||
@@ -20,6 +20,16 @@ import type {
|
||||
import { DefaultContextGenerator } from "./default-context-generator";
|
||||
import type { ContextGenerator } from "./type";
|
||||
|
||||
export type ContextChatEngineOptions = {
|
||||
retriever: BaseRetriever;
|
||||
chatModel?: LLM | undefined;
|
||||
chatHistory?: ChatMessage[] | undefined;
|
||||
contextSystemPrompt?: ContextSystemPrompt | undefined;
|
||||
nodePostprocessors?: BaseNodePostprocessor[] | undefined;
|
||||
systemPrompt?: string | undefined;
|
||||
contextRole?: MessageType | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* ContextChatEngine uses the Index to get the appropriate context for each query.
|
||||
* The context is stored in the system prompt, and the chat history is chunk,
|
||||
@@ -35,15 +45,7 @@ export class ContextChatEngine extends PromptMixin implements BaseChatEngine {
|
||||
return this.memory.getMessages();
|
||||
}
|
||||
|
||||
constructor(init: {
|
||||
retriever: BaseRetriever;
|
||||
chatModel?: LLM | undefined;
|
||||
chatHistory?: ChatMessage[] | undefined;
|
||||
contextSystemPrompt?: ContextSystemPrompt | undefined;
|
||||
nodePostprocessors?: BaseNodePostprocessor[] | undefined;
|
||||
systemPrompt?: string | undefined;
|
||||
contextRole?: MessageType | undefined;
|
||||
}) {
|
||||
constructor(init: ContextChatEngineOptions) {
|
||||
super();
|
||||
this.chatModel = init.chatModel ?? Settings.llm;
|
||||
this.memory = new ChatMemoryBuffer({ chatHistory: init?.chatHistory });
|
||||
|
||||
@@ -4,6 +4,9 @@ export {
|
||||
type NonStreamingChatEngineParams,
|
||||
type StreamingChatEngineParams,
|
||||
} from "./base";
|
||||
export { ContextChatEngine } from "./context-chat-engine";
|
||||
export {
|
||||
ContextChatEngine,
|
||||
type ContextChatEngineOptions,
|
||||
} from "./context-chat-engine";
|
||||
export { DefaultContextGenerator } from "./default-context-generator";
|
||||
export { SimpleChatEngine } from "./simple-chat-engine";
|
||||
|
||||
@@ -16,7 +16,6 @@ export const DEFAULT_DOC_STORE_PERSIST_FILENAME = "doc_store.json";
|
||||
export const DEFAULT_VECTOR_STORE_PERSIST_FILENAME = "vector_store.json";
|
||||
export const DEFAULT_GRAPH_STORE_PERSIST_FILENAME = "graph_store.json";
|
||||
export const DEFAULT_NAMESPACE = "docstore";
|
||||
export const DEFAULT_IMAGE_VECTOR_NAMESPACE = "images";
|
||||
//#endregion
|
||||
//#region llama cloud
|
||||
export const DEFAULT_PROJECT_NAME = "Default";
|
||||
|
||||
Vendored
+1
-1
@@ -113,7 +113,7 @@
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/env"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @llamaindex/experimental
|
||||
|
||||
## 0.0.150
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- Updated dependencies [b490376]
|
||||
- Updated dependencies [f4588bc]
|
||||
- llamaindex@0.9.0
|
||||
|
||||
## 0.0.149
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@llamaindex/experimental",
|
||||
"description": "Experimental package for LlamaIndexTS",
|
||||
"version": "0.0.149",
|
||||
"version": "0.0.150",
|
||||
"type": "module",
|
||||
"types": "dist/type/index.d.ts",
|
||||
"main": "dist/cjs/index.js",
|
||||
@@ -42,7 +42,7 @@
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/experimental"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# llamaindex
|
||||
|
||||
## 0.9.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 6a4a737: Remove re-exports from llamaindex main package
|
||||
- b490376: Remove deprecated ServiceContext
|
||||
- f4588bc: Remove readers package from llamaindex
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- d924c63: feat: asChatEngine function for index
|
||||
- Updated dependencies [6a4a737]
|
||||
- Updated dependencies [d924c63]
|
||||
- @llamaindex/core@0.5.0
|
||||
- @llamaindex/cloud@3.0.0
|
||||
- @llamaindex/node-parser@1.0.0
|
||||
- @llamaindex/openai@0.1.52
|
||||
|
||||
## 0.8.37
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "llamaindex",
|
||||
"version": "0.8.37",
|
||||
"version": "0.9.0",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"keywords": [
|
||||
@@ -20,35 +20,11 @@
|
||||
"llamaindex"
|
||||
],
|
||||
"dependencies": {
|
||||
"@llamaindex/anthropic": "workspace:*",
|
||||
"@llamaindex/clip": "workspace:*",
|
||||
"@llamaindex/cloud": "workspace:*",
|
||||
"@llamaindex/core": "workspace:*",
|
||||
"@llamaindex/deepinfra": "workspace:*",
|
||||
"@llamaindex/env": "workspace:*",
|
||||
"@llamaindex/groq": "workspace:*",
|
||||
"@llamaindex/huggingface": "workspace:*",
|
||||
"@llamaindex/node-parser": "workspace:*",
|
||||
"@llamaindex/ollama": "workspace:*",
|
||||
"@llamaindex/openai": "workspace:*",
|
||||
"@llamaindex/portkey-ai": "workspace:*",
|
||||
"@llamaindex/readers": "workspace:*",
|
||||
"@llamaindex/replicate": "workspace:*",
|
||||
"@llamaindex/vllm": "workspace:*",
|
||||
"@llamaindex/postgres": "workspace:*",
|
||||
"@llamaindex/azure": "workspace:*",
|
||||
"@llamaindex/astra": "workspace:*",
|
||||
"@llamaindex/milvus": "workspace:*",
|
||||
"@llamaindex/chroma": "workspace:*",
|
||||
"@llamaindex/mongodb": "workspace:*",
|
||||
"@llamaindex/pinecone": "workspace:*",
|
||||
"@llamaindex/qdrant": "workspace:*",
|
||||
"@llamaindex/upstash": "workspace:*",
|
||||
"@llamaindex/weaviate": "workspace:*",
|
||||
"@llamaindex/google": "workspace:*",
|
||||
"@llamaindex/mistral": "workspace:*",
|
||||
"@llamaindex/mixedbread": "workspace:*",
|
||||
"@llamaindex/cohere": "workspace:*",
|
||||
"@types/lodash": "^4.17.7",
|
||||
"@types/node": "^22.9.0",
|
||||
"ajv": "^8.17.1",
|
||||
@@ -101,29 +77,10 @@
|
||||
"default": "./dist/cjs/next.js"
|
||||
}
|
||||
},
|
||||
"./register": "./register.js",
|
||||
"./internal/*": {
|
||||
"import": "./dist/not-allow.js",
|
||||
"require": "./dist/cjs/not-allow.js"
|
||||
},
|
||||
"./readers/SimpleDirectoryReader": {
|
||||
"workerd": {
|
||||
"types": "./dist/type/readers/SimpleDirectoryReader.edge.d.ts",
|
||||
"default": "./dist/readers/SimpleDirectoryReader.edge.js"
|
||||
},
|
||||
"edge-light": {
|
||||
"types": "./dist/type/readers/SimpleDirectoryReader.edge.d.ts",
|
||||
"default": "./dist/readers/SimpleDirectoryReader.edge.js"
|
||||
},
|
||||
"import": {
|
||||
"types": "./dist/type/readers/SimpleDirectoryReader.d.ts",
|
||||
"default": "./dist/readers/SimpleDirectoryReader.js"
|
||||
},
|
||||
"require": {
|
||||
"types": "./dist/type/readers/SimpleDirectoryReader.d.ts",
|
||||
"default": "./dist/cjs/readers/SimpleDirectoryReader.js"
|
||||
}
|
||||
},
|
||||
"./*": {
|
||||
"import": {
|
||||
"types": "./dist/type/*.d.ts",
|
||||
@@ -136,7 +93,6 @@
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"./register.js",
|
||||
"dist",
|
||||
"CHANGELOG.md",
|
||||
"examples",
|
||||
@@ -144,7 +100,7 @@
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
||||
"directory": "packages/llamaindex"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
/**
|
||||
* ```shell
|
||||
* node --import llamaindex/register ./loader.js
|
||||
* ```
|
||||
*/
|
||||
import "@llamaindex/readers/node";
|
||||
@@ -1,67 +0,0 @@
|
||||
import type { BaseEmbedding } from "@llamaindex/core/embeddings";
|
||||
import { PromptHelper } from "@llamaindex/core/indices";
|
||||
import type { LLM } from "@llamaindex/core/llms";
|
||||
import {
|
||||
type NodeParser,
|
||||
SentenceSplitter,
|
||||
} from "@llamaindex/core/node-parser";
|
||||
import { OpenAI, OpenAIEmbedding } from "@llamaindex/openai";
|
||||
|
||||
/**
|
||||
* The ServiceContext is a collection of components that are used in different parts of the application.
|
||||
*
|
||||
* @deprecated This will no longer supported, please use `Settings` instead.
|
||||
*/
|
||||
export interface ServiceContext {
|
||||
llm: LLM;
|
||||
promptHelper: PromptHelper;
|
||||
embedModel: BaseEmbedding;
|
||||
nodeParser: NodeParser;
|
||||
// llamaLogger: any;
|
||||
}
|
||||
|
||||
export interface ServiceContextOptions {
|
||||
llm?: LLM;
|
||||
promptHelper?: PromptHelper;
|
||||
embedModel?: BaseEmbedding;
|
||||
nodeParser?: NodeParser;
|
||||
// NodeParser arguments
|
||||
chunkSize?: number;
|
||||
chunkOverlap?: number;
|
||||
}
|
||||
|
||||
export function serviceContextFromDefaults(options?: ServiceContextOptions) {
|
||||
const serviceContext: ServiceContext = {
|
||||
llm: options?.llm ?? new OpenAI(),
|
||||
embedModel: options?.embedModel ?? new OpenAIEmbedding(),
|
||||
nodeParser:
|
||||
options?.nodeParser ??
|
||||
new SentenceSplitter({
|
||||
chunkSize: options?.chunkSize,
|
||||
chunkOverlap: options?.chunkOverlap,
|
||||
}),
|
||||
promptHelper: options?.promptHelper ?? new PromptHelper(),
|
||||
};
|
||||
|
||||
return serviceContext;
|
||||
}
|
||||
|
||||
export function serviceContextFromServiceContext(
|
||||
serviceContext: ServiceContext,
|
||||
options: ServiceContextOptions,
|
||||
) {
|
||||
const newServiceContext = { ...serviceContext };
|
||||
if (options.llm) {
|
||||
newServiceContext.llm = options.llm;
|
||||
}
|
||||
if (options.promptHelper) {
|
||||
newServiceContext.promptHelper = options.promptHelper;
|
||||
}
|
||||
if (options.embedModel) {
|
||||
newServiceContext.embedModel = options.embedModel;
|
||||
}
|
||||
if (options.nodeParser) {
|
||||
newServiceContext.nodeParser = options.nodeParser;
|
||||
}
|
||||
return newServiceContext;
|
||||
}
|
||||
@@ -12,7 +12,6 @@ import {
|
||||
SentenceSplitter,
|
||||
} from "@llamaindex/core/node-parser";
|
||||
import { AsyncLocalStorage } from "@llamaindex/env";
|
||||
import type { ServiceContext } from "./ServiceContext.js";
|
||||
|
||||
export type PromptConfig = {
|
||||
llm?: string;
|
||||
@@ -163,42 +162,4 @@ class GlobalSettings implements Config {
|
||||
}
|
||||
}
|
||||
|
||||
export const llmFromSettingsOrContext = (serviceContext?: ServiceContext) => {
|
||||
if (serviceContext?.llm) {
|
||||
return serviceContext.llm;
|
||||
}
|
||||
|
||||
return Settings.llm;
|
||||
};
|
||||
|
||||
export const nodeParserFromSettingsOrContext = (
|
||||
serviceContext?: ServiceContext,
|
||||
) => {
|
||||
if (serviceContext?.nodeParser) {
|
||||
return serviceContext.nodeParser;
|
||||
}
|
||||
|
||||
return Settings.nodeParser;
|
||||
};
|
||||
|
||||
export const embedModelFromSettingsOrContext = (
|
||||
serviceContext?: ServiceContext,
|
||||
) => {
|
||||
if (serviceContext?.embedModel) {
|
||||
return serviceContext.embedModel;
|
||||
}
|
||||
|
||||
return Settings.embedModel;
|
||||
};
|
||||
|
||||
export const promptHelperFromSettingsOrContext = (
|
||||
serviceContext?: ServiceContext,
|
||||
) => {
|
||||
if (serviceContext?.promptHelper) {
|
||||
return serviceContext.promptHelper;
|
||||
}
|
||||
|
||||
return Settings.promptHelper;
|
||||
};
|
||||
|
||||
export const Settings = new GlobalSettings();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user