Compare commits

..

2 Commits

Author SHA1 Message Date
thucpn d751af3ba1 fix: use tsx 2024-12-20 17:15:41 +07:00
thucpn 6e0bf26566 fix: add start command for stackblitz 2024-12-20 17:11:32 +07:00
475 changed files with 9713 additions and 19004 deletions
+1 -1
View File
@@ -25,4 +25,4 @@ jobs:
run: pnpm run build
- name: Pre Release
run: pnpx pkg-pr-new publish --pnpm ./packages/* ./packages/providers/* ./packages/providers/storage/*
run: pnpx pkg-pr-new publish ./packages/* ./packages/providers/*
+6 -24
View File
@@ -83,6 +83,11 @@ 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
@@ -98,7 +103,6 @@ jobs:
- nextjs-node-runtime
- waku-query-engine
- llama-parse-browser
- vite-import-llamaindex
runs-on: ubuntu-latest
name: Build LlamaIndex Example (${{ matrix.packages }})
steps:
@@ -117,28 +121,6 @@ jobs:
run: pnpm run build
working-directory: e2e/examples/${{ matrix.packages }}
size-limit:
runs-on: ubuntu-latest
name: Size Limit
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build llamaindex
run: pnpm run build
- uses: andresz1/size-limit-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
directory: e2e/examples/vite-import-llamaindex
skip_step: "install"
build_script: build
typecheck-examples:
runs-on: ubuntu-latest
@@ -168,7 +150,7 @@ jobs:
done
- name: Pack provider packages
run: |
for dir in packages/providers/* packages/providers/storage/*; do
for dir in packages/providers/*; do
if [ -d "$dir" ] && [ -f "$dir/package.json" ]; then
echo "Packing $dir"
pnpm pack --pack-destination ${{ runner.temp }} -C $dir
+3 -1
View File
@@ -1 +1,3 @@
pnpm run lint-staged
pnpm format
pnpm lint
npx lint-staged
-1
View File
@@ -1 +0,0 @@
LlamaIndexTS
+1 -2
View File
@@ -14,6 +14,5 @@
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"prettier.prettierPath": "./node_modules/prettier",
"prettier.configPath": "prettier.config.mjs"
"prettier.prettierPath": "./node_modules/prettier"
}
+33 -7
View File
@@ -65,18 +65,44 @@ yarn add llamaindex
See our official document: <https://ts.llamaindex.ai/docs/llamaindex/getting_started/>
### Adding provider packages
### Tips when using in non-Node.js environments
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.
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.
For example, to use the OpenAI LLM, you would install the following package:
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`).
```shell
npm install @llamaindex/openai
pnpm install @llamaindex/openai
yarn add @llamaindex/openai
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/storage/vectorStore/PineconeVectorStore";
```
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
-121
View File
@@ -1,126 +1,5 @@
# @llamaindex/doc
## 0.1.1
### Patch Changes
- Updated dependencies [6d37d44]
- llamaindex@0.9.1
- @llamaindex/cloud@3.0.1
- @llamaindex/core@0.5.1
- @llamaindex/node-parser@1.0.1
- @llamaindex/openai@0.1.53
- @llamaindex/readers@2.0.1
- @llamaindex/workflow@0.0.11
## 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
- Updated dependencies [1c908fd]
- @llamaindex/openai@0.1.51
- @llamaindex/node-parser@0.0.24
- @llamaindex/workflow@0.0.10
- @llamaindex/readers@1.0.25
- @llamaindex/cloud@2.0.24
- @llamaindex/core@0.4.23
- llamaindex@0.8.37
## 0.0.40
### Patch Changes
- Updated dependencies [cb608b5]
- @llamaindex/openai@0.1.50
- @llamaindex/node-parser@0.0.23
- @llamaindex/workflow@0.0.9
- @llamaindex/readers@1.0.24
- @llamaindex/cloud@2.0.23
- @llamaindex/core@0.4.22
- llamaindex@0.8.36
## 0.0.39
### Patch Changes
- 6d4d96f: chore: update examples and docs to use unified imports
- Updated dependencies [15563a0]
- @llamaindex/openai@0.1.49
- llamaindex@0.8.35
## 0.0.38
### Patch Changes
- Updated dependencies [9f8ad37]
- Updated dependencies [7265f74]
- llamaindex@0.8.34
- @llamaindex/openai@0.1.48
## 0.0.37
### Patch Changes
- Updated dependencies [2019a04]
- @llamaindex/openai@0.1.47
- llamaindex@0.8.33
## 0.0.36
### Patch Changes
- f02621e: Fix internal links between chapters
- Updated dependencies [34faf48]
- Updated dependencies [4df1fe6]
- Updated dependencies [9456616]
- Updated dependencies [d6c270e]
- Updated dependencies [1892e1c]
- Updated dependencies [1931bbc]
- llamaindex@0.8.32
- @llamaindex/core@0.4.21
- @llamaindex/cloud@2.0.22
- @llamaindex/openai@0.1.46
- @llamaindex/node-parser@0.0.22
- @llamaindex/readers@1.0.23
## 0.0.35
### Patch Changes
- Updated dependencies [5dec9f9]
- Updated dependencies [fd9c829]
- Updated dependencies [d211b7a]
- Updated dependencies [0ebbfc1]
- @llamaindex/cloud@2.0.21
- llamaindex@0.8.31
- @llamaindex/core@0.4.20
- @llamaindex/node-parser@0.0.21
- @llamaindex/openai@0.1.45
- @llamaindex/readers@1.0.22
## 0.0.34
### Patch Changes
+10 -11
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/doc",
"version": "0.1.1",
"version": "0.0.34",
"private": true,
"scripts": {
"build": "pnpm run build:docs && next build",
@@ -28,19 +28,18 @@
"@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.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",
"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",
"hast-util-to-jsx-runtime": "^2.3.2",
"llamaindex": "workspace:*",
"lucide-react": "^0.460.0",
@@ -55,8 +54,8 @@
"rehype-katex": "^7.0.1",
"remark-math": "^6.0.0",
"rimraf": "^6.0.1",
"shiki": "^2.3.2",
"shiki-magic-move": "^1.0.0",
"shiki": "1.23.1",
"shiki-magic-move": "^0.5.0",
"swr": "^2.2.5",
"tailwind-merge": "^2.5.2",
"tailwindcss-animate": "^1.0.7",
+4 -10
View File
@@ -76,19 +76,15 @@ export default function HomePage() {
>
<MagicMove
code={[
`import { OpenAI } from "@llamaindex/openai";
`import { OpenAI } from "llamaindex";
const llm = new OpenAI();
const response = await llm.complete({ prompt: "How are you?" });`,
`import { OpenAI } from "@llamaindex/openai";
`import { OpenAI } from "llamaindex";
const llm = new OpenAI();
const response = await llm.chat({
messages: [{ content: "Tell me a joke.", role: "user" }],
});`,
`import { ChatMemoryBuffer } from "llamaindex";
import { OpenAI } from "@llamaindex/openai";
`import { OpenAI, ChatMemoryBuffer } from "llamaindex";
const llm = new OpenAI({ model: 'gpt4o-turbo' });
const buffer = new ChatMemoryBuffer({
tokenLimit: 128_000,
@@ -98,9 +94,7 @@ const response = await llm.chat({
messages: buffer.getMessages(),
stream: true
});`,
`import { ChatMemoryBuffer } from "llamaindex";
import { OpenAIAgent } from "@llamaindex/openai";
`import { OpenAIAgent, ChatMemoryBuffer } from "llamaindex";
const agent = new OpenAIAgent({
llm,
tools: [...myTools]
@@ -5,24 +5,4 @@ title: Gemini Agent
import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock';
import CodeSourceGemini from "!raw-loader!../../../../../../../examples/gemini/agent.ts";
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/google
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/google
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/google
```
</Tabs>
## Source
<DynamicCodeBlock lang="ts" code={CodeSourceGemini} />
@@ -12,8 +12,9 @@ Here's a simple example of how to use the Context-Aware Agent:
import {
Document,
VectorStoreIndex,
OpenAIContextAwareAgent,
OpenAI,
} from "llamaindex";
import { OpenAI, OpenAIContextAwareAgent } from "@llamaindex/openai";
async function createContextAwareAgent() {
// Create and index some documents
@@ -57,3 +58,4 @@ 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,8 +2,6 @@
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
@@ -26,23 +24,7 @@ The first time you run it will also automatically download and install the model
### Switch the LLM in your code
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:
To tell LlamaIndex to use a local LLM, use the `Settings` object:
```javascript
Settings.llm = new Ollama({
@@ -52,25 +34,7 @@ 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 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:
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:
```javascript
Settings.embedModel = new HuggingFaceEmbedding({
@@ -7,36 +7,14 @@ import CodeSource from "!raw-loader!../../../../../../../examples/mistral";
By default LlamaIndex.TS uses OpenAI's LLMs and embedding models, but we support [lots of other LLMs](../modules/llms) including models from Mistral (Mistral, Mixtral), Anthropic (Claude) and Google (Gemini).
If you don't want to use an API at all you can [run a local model](../../examples/local_llm).
This example runs you through the process of setting up a Mistral model:
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/mistral
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/mistral
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/mistral
```
</Tabs>
If you don't want to use an API at all you can [run a local model](../../examples/local_llm)
## Using another LLM
You can specify what LLM LlamaIndex.TS will use on the `Settings` object, like this:
```typescript
import { MistralAI } from "@llamaindex/mistral";
import { Settings } from "llamaindex";
import { MistralAI, Settings } from "llamaindex";
Settings.llm = new MistralAI({
model: "mistral-tiny",
@@ -51,8 +29,7 @@ You can see examples of other APIs we support by checking out "Available LLMs" i
A frequent gotcha when trying to use a different API as your LLM is that LlamaIndex will also by default index and embed your data using OpenAI's embeddings. To completely switch away from OpenAI you will need to set your embedding model as well, for example:
```typescript
import { MistralAIEmbedding } from "@llamaindex/mistral";
import { Settings } from "llamaindex";
import { MistralAIEmbedding, Settings } from "llamaindex";
Settings.embedModel = new MistralAIEmbedding();
```
@@ -1,12 +1,10 @@
---
title: Installation
description: How to install llamaindex packages.
description: Install llamaindex by running a single command.
---
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
To install llamaindex, run the following command:
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex
@@ -21,25 +19,6 @@ To install llamaindex, run the following command:
```
</Tabs>
In most cases, you'll also need an LLM package to use LlamaIndex. For example, to use the OpenAI LLM, you would install the following:
<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>
Go to [Using other LLM APIs](/docs/llamaindex/examples/other_llms) to find out how to use other LLMs.
## What's next?
<Cards>
@@ -70,8 +70,10 @@ 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 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.
- 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.
@@ -9,7 +9,7 @@ LlamaIndex.TS is written in TypeScript and designed to be used in TypeScript pro
We do lots of work on strong typing to make sure you have a great typing experience with LlamaIndex.TS.
```ts twoslash
import { PromptTemplate } from 'llamaindex'
import { PromptTemplate } from '@llamaindex/core/prompts'
const promptTemplate = new PromptTemplate({
template: `Context information from multiple sources is below.
---------------------
@@ -29,7 +29,7 @@ promptTemplate.format({
```
```ts twoslash
import { FunctionTool } from 'llamaindex'
import { FunctionTool } from '@llamaindex/core/tools'
import { z } from 'zod'
// ---cut-before---
@@ -15,12 +15,12 @@ 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 @llamaindex/openai @llamaindex/readers @llamaindex/huggingface
npm install llamaindex
```
## Choose your model
By default we'll be using OpenAI with GPT-4, as it's a powerful model and easy to get started with. If you'd prefer to run a local model, see [using a local model](3_local_model).
By default we'll be using OpenAI with GPT-4, as it's a powerful model and easy to get started with. If you'd prefer to run a local model, see [using a local model](local_model).
## Get an OpenAI API key
@@ -36,4 +36,4 @@ We'll use `dotenv` to pull the API key out of that .env file, so also run:
npm install dotenv
```
Now you're ready to [create your agent](2_create_agent).
Now you're ready to [create your agent](create_agent).
@@ -31,8 +31,7 @@ First we'll need to pull in our dependencies. These are:
- Dotenv to load our API key from the .env file
```javascript
import { FunctionTool, Settings } from "llamaindex";
import { OpenAI, OpenAIAgent } from "@llamaindex/openai";
import { OpenAI, FunctionTool, OpenAIAgent, Settings } from "llamaindex";
import "dotenv/config";
```
@@ -178,5 +177,5 @@ The second piece of output is the response from the LLM itself, where the `messa
Great! We've built an agent with tool use! Next you can:
- [See the full code](https://github.com/run-llama/ts-agents/blob/main/1_agent/agent.ts)
- [Switch to a local LLM](3_local_model)
- Move on to [add Retrieval-Augmented Generation to your agent](4_agentic_rag)
- [Switch to a local LLM](local_model)
- Move on to [add Retrieval-Augmented Generation to your agent](agentic_rag)
@@ -89,4 +89,4 @@ You can use a ReActAgent instead of an OpenAIAgent in any of the further example
### Next steps
Now you've got a local agent, you can [add Retrieval-Augmented Generation to your agent](4_agentic_rag).
Now you've got a local agent, you can [add Retrieval-Augmented Generation to your agent](agentic_rag).
@@ -13,34 +13,22 @@ To learn more about RAG, we recommend this [introduction](https://docs.llamainde
We're going to start with the same agent we [built in step 1](https://github.com/run-llama/ts-agents/blob/main/1_agent/agent.ts), but make a few changes. You can find the finished version [in the repository](https://github.com/run-llama/ts-agents/blob/main/2_agentic_rag/agent.ts).
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai @llamaindex/huggingface
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai @llamaindex/huggingface
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai @llamaindex/huggingface
```
</Tabs>
### New dependencies
We'll be bringing in `SimpleDirectoryReader`, `HuggingFaceEmbedding`, `VectorStoreIndex`, and `QueryEngineTool`, `OpenAIContextAwareAgent` from LlamaIndex.TS, as well as the dependencies we previously used.
```javascript
import { FunctionTool, QueryEngineTool, Settings, VectorStoreIndex } from "llamaindex";
import { OpenAI, OpenAIAgent } from "@llamaindex/openai";
import { HuggingFaceEmbedding } from "@llamaindex/huggingface";
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
import {
OpenAI,
FunctionTool,
OpenAIAgent,
OpenAIContextAwareAgent,
Settings,
SimpleDirectoryReader,
HuggingFaceEmbedding,
VectorStoreIndex,
QueryEngineTool,
} from "llamaindex";
```
### Add an embedding model
@@ -165,4 +153,4 @@ The `OpenAIContextAwareAgent` approach simplifies the setup by allowing you to d
On the other hand, using the `QueryEngineTool` offers more flexibility and power. This method allows for customization in how queries are constructed and executed, enabling you to query data from various storages and process them in different ways. However, this added flexibility comes with increased complexity and response time due to the separate tool call and queryEngine generating tool output by LLM that is then passed to the agent.
So now we have an agent that can index complicated documents and answer questions about them. Let's [combine our math agent and our RAG agent](5_rag_and_tools)!
So now we have an agent that can index complicated documents and answer questions about them. Let's [combine our math agent and our RAG agent](rag_and_tools)!
@@ -127,4 +127,4 @@ In the final tool call, it used the `sumNumbers` function to add the two budgets
}
```
Great! Now let's improve accuracy by improving our parsing with [LlamaParse](6_llamaparse).
Great! Now let's improve accuracy by improving our parsing with [LlamaParse](llamaparse).
@@ -17,4 +17,4 @@ const documents = await reader.loadData("../data/sf_budget_2023_2024.pdf");
Now you will be able to ask more complicated questions of the same PDF and get better results. You can find this code [in our repo](https://github.com/run-llama/ts-agents/blob/main/4_llamaparse/agent.ts).
Next up, let's persist our embedded data so we don't have to re-parse every time by [using a vector store](7_qdrant).
Next up, let's persist our embedded data so we don't have to re-parse every time by [using a vector store](qdrant).
@@ -65,13 +65,13 @@ Since parsing a PDF can be slow, especially a large one, using the pre-parsed ch
In this guide you've learned how to
- [Create an agent](2_create_agent)
- [Create an agent](create_agent)
- Use remote LLMs like GPT-4
- [Use local LLMs like Mixtral](3_local_model)
- [Create a RAG query engine](4_agentic_rag)
- [Turn functions and query engines into agent tools](5_rag_and_tools)
- [Use local LLMs like Mixtral](local_model)
- [Create a RAG query engine](agentic_rag)
- [Turn functions and query engines into agent tools](rag_and_tools)
- Combine those tools
- [Enhance your parsing with LlamaParse](6_llamaparse)
- [Enhance your parsing with LlamaParse](llamaparse)
- Persist your data in a vector store
The next steps are up to you! Try creating more complex functions and query engines, and set your agent loose on the world.
@@ -10,7 +10,7 @@ import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
<Accordions>
<Accordion title="Install @llamaindex/readers">
If you want to use the reader module, you need to install `@llamaindex/readers`
If you want to only use reader modules, you can install `@llamaindex/readers`
<Tabs groupId="install-llamaindex" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
@@ -31,73 +31,72 @@ import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
We offer readers for different file formats.
```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
```
<Tabs groupId="llamaindex-or-readers" items={["llamaindex", "@llamaindex/readers"]} persist>
```ts twoslash tab="llamaindex"
import { CSVReader } from 'llamaindex'
import { PDFReader } from 'llamaindex'
import { JSONReader } from 'llamaindex'
import { MarkdownReader } from 'llamaindex'
import { HTMLReader } from 'llamaindex'
// 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>
## SimpleDirectoryReader
`SimpleDirectoryReader` is the simplest way to load data from local files into LlamaIndex.
```ts twoslash
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
<Tabs groupId="llamaindex-or-readers" items={["llamaindex", "@llamaindex/readers"]} persist>
const reader = new SimpleDirectoryReader()
const documents = await reader.loadData("./data")
// ^?
```ts twoslash tab="llamaindex"
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())
// ^?
```
```ts twoslash tab="@llamaindex/readers"
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
const reader = new SimpleDirectoryReader()
const documents = await reader.loadData("./data")
// ^?
## 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
const texts = documents.map(doc => doc.getText())
// ^?
```
</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.
```shell
node --import @llamaindex/readers/node ./script.js
```
<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>
```ts
import csv from './path/to/data.csv';
@@ -15,7 +15,7 @@ By default, we will use `Settings.nodeParser` to split the document into nodes.
```ts twoslash
import { TextFileReader } from '@llamaindex/readers/text'
import { SentenceSplitter } from 'llamaindex';
import { SentenceSplitter } from '@llamaindex/core/node-parser';
import { Settings } from 'llamaindex';
const nodeParser = new SentenceSplitter();
@@ -28,7 +28,7 @@ Settings.nodeParser = nodeParser;
The underlying text splitter will split text by sentences. It can also be used as a standalone module for splitting raw text.
```ts twoslash
import { SentenceSplitter } from "llamaindex";
import { SentenceSplitter } from "@llamaindex/core/node-parser";
const splitter = new SentenceSplitter({ chunkSize: 1 });
@@ -42,7 +42,7 @@ The `MarkdownNodeParser` is a more advanced `NodeParser` that can handle markdow
<Tabs items={["with reader", "with node:fs"]}>
```ts twoslash tab="with reader"
import { MarkdownNodeParser } from "llamaindex";
import { MarkdownNodeParser } from "@llamaindex/core/node-parser";
import { MarkdownReader } from '@llamaindex/readers/markdown'
const reader = new MarkdownReader();
@@ -56,7 +56,8 @@ The `MarkdownNodeParser` is a more advanced `NodeParser` that can handle markdow
```ts twoslash tab="with node:fs"
import fs from 'node:fs/promises';
import { MarkdownNodeParser, Document } from "llamaindex";
import { MarkdownNodeParser } from "@llamaindex/core/node-parser";
import { Document } from '@llamaindex/core/schema';
const markdownNodeParser = new MarkdownNodeParser();
const text = await fs.readFile('path/to/file.md', 'utf-8');
@@ -81,7 +82,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 as Parser.Language);
parser.setLanguage(TS.typescript);
const codeSplitter = new CodeSplitter({
getParser: () => parser,
});
@@ -99,7 +100,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 as Parser.Language);
parser.setLanguage(TS.typescript);
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?embed=1&file=starter.ts"
src="https://stackblitz.com/github/run-llama/LlamaIndexTS/tree/main/examples?file=starter.ts"
/>
@@ -69,7 +69,7 @@ streamText({
For production deployments, you can use LlamaCloud to store and manage your documents:
```typescript
import { LlamaCloudIndex } from "@llamaindex/cloud";
import { LlamaCloudIndex } from "llamaindex";
// Create a LlamaCloud index
const index = await LlamaCloudIndex.fromDocuments({
@@ -7,7 +7,6 @@
"what-is-llamaindex",
"index",
"getting_started",
"migration",
"guide",
"examples",
"modules",
@@ -1,97 +0,0 @@
---
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
@@ -1,5 +0,0 @@
{
"title": "Migration",
"description": "Migration between different versions",
"pages": ["0.8-to-0.9"]
}
@@ -12,26 +12,9 @@ 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);
@@ -6,28 +6,10 @@ A simple JSON data loader with various options.
Either parses the entire string, cleaning it and treat each line as an embedding or performs a recursive depth-first traversal yielding JSON paths.
Supports streaming of large JSON data using [@discoveryjs/json-ext](https://github.com/discoveryjs/json-ext)
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/readers
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/readers
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/readers
```
</Tabs>
## Usage
```ts
import { JSONReader } from "@llamaindex/readers/json";
import { JSONReader } from "llamaindex";
const file = "../../PATH/TO/FILE";
const content = new TextEncoder().encode("JSON_CONTENT");
@@ -4,24 +4,6 @@ title: Image Retrieval
LlamaParse `json` mode supports extracting any images found in a page object by using the `getImages` function. They are downloaded to a local folder and can then be sent to a multimodal LLM for further processing.
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/cloud @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/cloud @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/cloud @llamaindex/openai
```
</Tabs>
## Usage
We use the `getImages` method to input our array of JSON objects, download the images to a specified folder and get a list of ImageNodes.
@@ -37,10 +19,14 @@ const imageDicts = await reader.getImages(jsonObjs, "images");
You can create an index across both text and image nodes by requesting alternative text for the image from a multimodal LLM.
```ts
import { Document, ImageNode, VectorStoreIndex } from "llamaindex";
import { LlamaParseReader } from "@llamaindex/cloud";
import { OpenAI } from "@llamaindex/openai";
import { createMessageContent } from "llamaindex";
import {
Document,
ImageNode,
LlamaParseReader,
OpenAI,
VectorStoreIndex,
} from "llamaindex";
import { createMessageContent } from "llamaindex/synthesizers/utils";
const reader = new LlamaParseReader();
async function main() {
@@ -4,32 +4,12 @@ title: JSON Mode
In JSON mode, LlamaParse will return a data structure representing the parsed object.
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/cloud
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/cloud
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/cloud
```
</Tabs>
## Usage
For Json mode, you need to use `loadJson`. The `resultType` is automatically set with this method.
More information about indexing the results on the next page.
```ts
import { LlamaParseReader } from "@llamaindex/cloud";
const reader = new LlamaParseReader();
async function main() {
// Load the file and return an array of json objects
@@ -79,8 +59,7 @@ All Readers share a `loadData` method with `SimpleDirectoryReader` that promises
However, a simple work around is to create a new reader class that extends `LlamaParseReader` and adds a new method or overrides `loadData`, wrapping around JSON mode, extracting the required values, and returning a Document object.
```ts
import { Document } from "llamaindex";
import { LlamaParseReader } from "@llamaindex/cloud";
import { LlamaParseReader, Document } from "llamaindex";
class LlamaParseReaderWithJson extends LlamaParseReader {
// Override the loadData method
@@ -11,38 +11,6 @@ Document stores contain ingested document chunks, i.e. [Node](/docs/llamaindex/m
Check the [LlamaIndexTS Github](https://github.com/run-llama/LlamaIndexTS) for the most up to date overview of integrations.
## Using PostgreSQL as Document Store
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/postgres
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/postgres
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/postgres
```
</Tabs>
You can configure the `schemaName`, `tableName`, `namespace`, and
`connectionString`. If a `connectionString` is not
provided, it will use the environment variables `PGHOST`, `PGUSER`,
`PGPASSWORD`, `PGDATABASE` and `PGPORT`.
```typescript
import { Document, VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
import { PostgresDocumentStore } from "@llamaindex/postgres";
const storageContext = await storageContextFromDefaults({
docStore: new PostgresDocumentStore(),
});
```
## API Reference
- [BaseDocumentStore](/docs/api/classes/BaseDocumentStore)
@@ -5,13 +5,9 @@ title: Storage
Storage in LlamaIndex.TS works automatically once you've configured a
`StorageContext` object.
Per default a local directory is used for storage. Depening on the storage type (i.e. doc stores, index stores or vector stores), you can configure a different persistence layer.
Most commonly a vector database is used as vector store.
## Local Storage
You can configure the `persistDir` to define where to store the data locally.
You can configure the `persistDir` and attach it to an index.
```typescript
import {
@@ -30,6 +26,33 @@ const index = await VectorStoreIndex.fromDocuments([document], {
});
```
## PostgreSQL Storage
You can configure the `schemaName`, `tableName`, `namespace`, and
`connectionString`. If a `connectionString` is not
provided, it will use the environment variables `PGHOST`, `PGUSER`,
`PGPASSWORD`, `PGDATABASE` and `PGPORT`.
```typescript
import {
Document,
VectorStoreIndex,
PostgresDocumentStore,
PostgresIndexStore,
storageContextFromDefaults,
} from "llamaindex";
const storageContext = await storageContextFromDefaults({
docStore: new PostgresDocumentStore(),
indexStore: new PostgresIndexStore(),
});
const document = new Document({ text: "Test Text" });
const index = await VectorStoreIndex.fromDocuments([document], {
storageContext,
});
```
## API Reference
- [StorageContext](/docs/api/interfaces/StorageContext)
@@ -11,38 +11,6 @@ Index stores are underlying storage components that contain metadata(i.e. inform
Check the [LlamaIndexTS Github](https://github.com/run-llama/LlamaIndexTS) for the most up to date overview of integrations.
## Using PostgreSQL as Index Store
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/postgres
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/postgres
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/postgres
```
</Tabs>
You can configure the `schemaName`, `tableName`, `namespace`, and
`connectionString`. If a `connectionString` is not
provided, it will use the environment variables `PGHOST`, `PGUSER`,
`PGPASSWORD`, `PGDATABASE` and `PGPORT`.
```typescript
import { Document, VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
import { PostgresIndexStore } from "@llamaindex/postgres";
const storageContext = await storageContextFromDefaults({
indexStore: new PostgresIndexStore(),
});
```
## API Reference
- [BaseIndexStore](/docs/api/classes/BaseIndexStore)
@@ -21,4 +21,4 @@ Check the [LlamaIndexTS Github](https://github.com/run-llama/LlamaIndexTS) for t
## API Reference
- [BaseVectorStore](/docs/api/classes/BaseVectorStore)
- [VectorStoreBase](/docs/api/classes/VectorStoreBase)
@@ -11,30 +11,11 @@ docker pull qdrant/qdrant
docker run -p 6333:6333 qdrant/qdrant
```
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/qdrant
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/qdrant
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/qdrant
```
</Tabs>
## Importing the modules
```ts
import fs from "node:fs/promises";
import { Document, VectorStoreIndex } from "llamaindex";
import { QdrantVectorStore } from "@llamaindex/qdrant";
import { Document, VectorStoreIndex, QdrantVectorStore } from "llamaindex";
```
## Load the documents
@@ -79,8 +60,7 @@ console.log(response.toString());
```ts
import fs from "node:fs/promises";
import { Document, VectorStoreIndex } from "llamaindex";
import { QdrantVectorStore } from "@llamaindex/qdrant";
import { Document, VectorStoreIndex, QdrantVectorStore } from "llamaindex";
async function main() {
const path = "node_modules/llamaindex/examples/abramov.txt";
@@ -14,8 +14,13 @@ Our metadata extractor modules include the following "feature extractors":
Then you can chain the `Metadata Extractors` with the `IngestionPipeline` to extract metadata from a set of documents.
```ts
import { Document, IngestionPipeline, TitleExtractor, QuestionsAnsweredExtractor } from "llamaindex";
import { OpenAI } from "@llamaindex/openai";
import {
IngestionPipeline,
TitleExtractor,
QuestionsAnsweredExtractor,
Document,
OpenAI,
} from "llamaindex";
async function main() {
const pipeline = new IngestionPipeline({
@@ -5,27 +5,13 @@ title: DeepInfra
To use DeepInfra embeddings, you need to import `DeepInfraEmbedding` from llamaindex.
Check out available embedding models [here](https://deepinfra.com/models/embeddings).
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/deepinfra
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/deepinfra
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/deepinfra
```
</Tabs>
```ts
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import { DeepInfraEmbedding } from "@llamaindex/deepinfra";
import {
DeepInfraEmbedding,
Settings,
Document,
VectorStoreIndex,
} from "llamaindex";
// Update Embed Model
Settings.embedModel = new DeepInfraEmbedding();
@@ -47,7 +33,7 @@ By default, DeepInfraEmbedding is using the sentence-transformers/clip-ViT-B-32
For example:
```ts
import { DeepInfraEmbedding } from "@llamaindex/deepinfra";
import { DeepInfraEmbedding } from "llamaindex";
const model = "intfloat/e5-large-v2";
Settings.embedModel = new DeepInfraEmbedding({
@@ -60,8 +46,7 @@ You can also set the `maxRetries` and `timeout` parameters when initializing `De
For example:
```ts
import { Settings } from "llamaindex";
import { DeepInfraEmbedding } from "@llamaindex/deepinfra";
import { DeepInfraEmbedding, Settings } from "llamaindex";
const model = "intfloat/e5-large-v2";
const maxRetries = 5;
@@ -77,7 +62,7 @@ Settings.embedModel = new DeepInfraEmbedding({
Standalone usage:
```ts
import { DeepInfraEmbedding } from "@llamaindex/deepinfra";
import { DeepInfraEmbedding } from "llamaindex";
import { config } from "dotenv";
// For standalone usage, you need to configure DEEPINFRA_API_TOKEN in .env file
config();
@@ -2,29 +2,10 @@
title: Gemini
---
To use Gemini embeddings, you need to import `GeminiEmbedding` from `@llamaindex/google`.
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/google
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/google
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/google
```
</Tabs>
To use Gemini embeddings, you need to import `GeminiEmbedding` from `llamaindex`.
```ts
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import { GeminiEmbedding, GEMINI_MODEL } from "@llamaindex/google";
import { GeminiEmbedding, Settings } from "llamaindex";
// Update Embed Model
Settings.embedModel = new GeminiEmbedding();
@@ -46,7 +27,7 @@ Per default, `GeminiEmbedding` is using the `gemini-pro` model. You can change t
For example:
```ts
import { GEMINI_MODEL, GeminiEmbedding } from "@llamaindex/google";
import { GEMINI_MODEL, GeminiEmbedding } from "llamaindex";
Settings.embedModel = new GeminiEmbedding({
model: GEMINI_MODEL.GEMINI_PRO_LATEST,
@@ -2,29 +2,10 @@
title: HuggingFace
---
To use HuggingFace embeddings, you need to import `HuggingFaceEmbedding` from `@llamaindex/huggingface`.
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/huggingface
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/huggingface
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/huggingface
```
</Tabs>
To use HuggingFace embeddings, you need to import `HuggingFaceEmbedding` from `llamaindex`.
```ts
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import { HuggingFaceEmbedding } from "@llamaindex/huggingface";
import { HuggingFaceEmbedding, Settings } from "llamaindex";
// Update Embed Model
Settings.embedModel = new HuggingFaceEmbedding();
@@ -48,8 +29,6 @@ If you're not using a quantized model, set the `quantized` parameter to `false`.
For example, to use the not quantized `BAAI/bge-small-en-v1.5` model, you can use the following code:
```ts
import { HuggingFaceEmbedding } from "@llamaindex/huggingface";
Settings.embedModel = new HuggingFaceEmbedding({
modelType: "BAAI/bge-small-en-v1.5",
quantized: false,
@@ -2,29 +2,10 @@
title: MistralAI
---
To use MistralAI embeddings, you need to import `MistralAIEmbedding` from `@llamaindex/mistral`.
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/mistral
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/mistral
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/mistral
```
</Tabs>
To use MistralAI embeddings, you need to import `MistralAIEmbedding` from `llamaindex`.
```ts
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import { MistralAIEmbedding } from "@llamaindex/mistral";
import { MistralAIEmbedding, Settings } from "llamaindex";
// Update Embed Model
Settings.embedModel = new MistralAIEmbedding({
@@ -14,28 +14,16 @@ To find out more about the latest features, updates, and available models, visit
## Setup
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/mixedbread
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/mixedbread
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/mixedbread
```
</Tabs>
First, you will need to install the `llamaindex` package.
```bash
pnpm install llamaindex
```
Next, sign up for an API key at [mixedbread.ai](https://mixedbread.ai/). Once you have your API key, you can import the necessary modules and create a new instance of the `MixedbreadAIEmbeddings` class.
```ts
import { MixedbreadAIEmbeddings } from "@llamaindex/mixedbread";
import { Document, Settings } from "llamaindex";
import { MixedbreadAIEmbeddings, Document, Settings } from "llamaindex";
```
## Usage with LlamaIndex
@@ -2,7 +2,7 @@
title: Ollama
---
To use Ollama embeddings, you need to import `OllamaEmbedding` from `@llamaindex/ollama`.
To use Ollama embeddings, you need to import `OllamaEmbedding` from `llamaindex`.
Note that you need to pull the embedding model first before using it.
@@ -12,27 +12,8 @@ In the example below, we're using the [`nomic-embed-text`](https://ollama.com/li
ollama pull nomic-embed-text
```
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/ollama
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/ollama
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/ollama
```
</Tabs>
```ts
import { OllamaEmbedding } from "@llamaindex/ollama";
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import { OllamaEmbedding, Settings } from "llamaindex";
Settings.embedModel = new OllamaEmbedding({ model: "nomic-embed-text" });
@@ -2,29 +2,10 @@
title: OpenAI
---
To use OpenAI embeddings, you need to import `OpenAIEmbedding` from `@llamaindex/openai`.
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai
```
</Tabs>
To use OpenAI embeddings, you need to import `OpenAIEmbedding` from `llamaindex`.
```ts
import { OpenAIEmbedding } from "@llamaindex/openai";
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import { OpenAIEmbedding, Settings } from "llamaindex";
Settings.embedModel = new OpenAIEmbedding();
@@ -6,27 +6,8 @@ The embedding model in LlamaIndex is responsible for creating numerical represen
This can be explicitly updated through `Settings`
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai
```
</Tabs>
```typescript
import { OpenAIEmbedding } from "@llamaindex/openai";
import { Settings } from "llamaindex";
import { OpenAIEmbedding, Settings } from "llamaindex";
Settings.embedModel = new OpenAIEmbedding({
model: "text-embedding-ada-002",
@@ -10,21 +10,9 @@ This is useful for measuring if the response was correct. The evaluator returns
Firstly, you need to install the package:
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai
```
</Tabs>
```bash
pnpm i llamaindex
```
Set the OpenAI API key:
@@ -35,8 +23,7 @@ export OPENAI_API_KEY=your-api-key
Import the required modules:
```ts
import { OpenAI } from "@llamaindex/openai";
import { CorrectnessEvaluator, Settings, Response } from "llamaindex";
import { CorrectnessEvaluator, OpenAI, Settings, Response } from "llamaindex";
```
Let's setup gpt-4 for better results:
@@ -12,22 +12,9 @@ This is useful for measuring if the response was hallucinated. The evaluator ret
Firstly, you need to install the package:
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai
```
</Tabs>
```bash
pnpm i llamaindex
```
Set the OpenAI API key:
@@ -38,12 +25,12 @@ export OPENAI_API_KEY=your-api-key
Import the required modules:
```ts
import { OpenAI } from "@llamaindex/openai";
import {
Document,
FaithfulnessEvaluator,
Settings,
OpenAI,
VectorStoreIndex,
Settings,
} from "llamaindex";
```
@@ -10,22 +10,9 @@ It is useful for measuring if the response was relevant to the query. The evalua
Firstly, you need to install the package:
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai
```
</Tabs>
```bash
pnpm i llamaindex
```
Set the OpenAI API key:
@@ -36,11 +23,11 @@ export OPENAI_API_KEY=your-api-key
Import the required modules:
```ts
import { OpenAI } from "@llamaindex/openai";
import {
Document,
RelevancyEvaluator,
OpenAI,
Settings,
Document,
VectorStoreIndex,
} from "llamaindex";
```
@@ -5,35 +5,18 @@ title: Ingestion Pipeline
An `IngestionPipeline` uses a concept of `Transformations` that are applied to input data.
These `Transformations` are applied to your input data, and the resulting nodes are either returned or inserted into a vector database (if given).
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai @llamaindex/qdrant
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai @llamaindex/qdrant
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai @llamaindex/qdrant
```
</Tabs>
## Usage Pattern
The simplest usage is to instantiate an IngestionPipeline like so:
```ts
import fs from "node:fs/promises";
import { OpenAI, OpenAIEmbedding } from "@llamaindex/openai";
import {
Document,
IngestionPipeline,
MetadataMode,
OpenAIEmbedding,
TitleExtractor,
SentenceSplitter,
} from "llamaindex";
@@ -75,14 +58,14 @@ Then, you can construct an index from that vector store later on.
```ts
import fs from "node:fs/promises";
import { OpenAIEmbedding } from "@llamaindex/openai";
import { QdrantVectorStore } from "@llamaindex/qdrant";
import {
Document,
IngestionPipeline,
MetadataMode,
OpenAIEmbedding,
TitleExtractor,
SentenceSplitter,
QdrantVectorStore,
VectorStoreIndex,
} from "llamaindex";
@@ -2,29 +2,10 @@
title: Anthropic
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/anthropic
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/anthropic
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/anthropic
```
</Tabs>
## Usage
```ts
import { Settings } from "llamaindex";
import { Anthropic } from "@llamaindex/anthropic";
import { Anthropic, Settings } from "llamaindex";
Settings.llm = new Anthropic({
apiKey: "<YOUR_API_KEY>",
@@ -56,8 +37,7 @@ const results = await queryEngine.query({
## Full Example
```ts
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import { Anthropic } from "@llamaindex/anthropic";
import { Anthropic, Document, VectorStoreIndex, Settings } from "llamaindex";
Settings.llm = new Anthropic({
apiKey: "<YOUR_API_KEY>",
@@ -14,29 +14,10 @@ export AZURE_OPENAI_ENDPOINT="<YOUR ENDPOINT, see https://learn.microsoft.com/en
export AZURE_OPENAI_DEPLOYMENT="gpt-4" # or some other deployment name
```
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai
```
</Tabs>
## Usage
```ts
import { Settings } from "llamaindex";
import { OpenAI } from "@llamaindex/openai";
import { OpenAI, Settings } from "llamaindex";
Settings.llm = new OpenAI({ model: "gpt-4", temperature: 0 });
```
@@ -66,8 +47,7 @@ const results = await queryEngine.query({
## Full Example
```ts
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import { OpenAI } from "@llamaindex/openai";
import { OpenAI, Document, VectorStoreIndex, Settings } from "llamaindex";
Settings.llm = new OpenAI({ model: "gpt-4", temperature: 0 });
@@ -2,24 +2,6 @@
title: Bedrock
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/community
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/community
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/community
```
</Tabs>
## Usage
```ts
@@ -4,27 +4,8 @@ title: DeepInfra
Check out available LLMs [here](https://deepinfra.com/models/text-generation).
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/deepinfra
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/deepinfra
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/deepinfra
```
</Tabs>
```ts
import { DeepInfra } from "@llamaindex/deepinfra";
import { Settings } from "llamaindex";
import { DeepInfra, Settings } from "llamaindex";
// Get the API key from `DEEPINFRA_API_TOKEN` environment variable
import { config } from "dotenv";
@@ -47,8 +28,6 @@ export DEEPINFRA_API_TOKEN="<YOUR_API_KEY>"
For this example, we will use a single document. In a real-world scenario, you would have multiple documents to index.
```ts
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: essay, id_: "essay" });
const index = await VectorStoreIndex.fromDocuments([document]);
@@ -69,8 +48,7 @@ const results = await queryEngine.query({
## Full Example
```ts
import { DeepInfra } from "@llamaindex/deepinfra";
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import { DeepInfra, Document, VectorStoreIndex, Settings } from "llamaindex";
// Use custom LLM
const model = "meta-llama/Meta-Llama-3-8B-Instruct";
@@ -2,29 +2,10 @@
title: Gemini
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/google
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/google
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/google
```
</Tabs>
## Usage
```ts
import { Gemini, GEMINI_MODEL } from "@llamaindex/google";
import { Settings } from "llamaindex";
import { Gemini, Settings, GEMINI_MODEL } from "llamaindex";
Settings.llm = new Gemini({
model: GEMINI_MODEL.GEMINI_PRO,
@@ -38,7 +19,7 @@ To use Gemini via Vertex AI you can use `GeminiVertexSession`.
GeminiVertexSession accepts the env variables: `GOOGLE_VERTEX_LOCATION` and `GOOGLE_VERTEX_PROJECT`
```ts
import { Gemini, GEMINI_MODEL, GeminiVertexSession } from "@llamaindex/google";
import { Gemini, GEMINI_MODEL, GeminiVertexSession } from "llamaindex";
const gemini = new Gemini({
model: GEMINI_MODEL.GEMINI_PRO,
@@ -66,8 +47,6 @@ To authenticate for production you'll have to use a [service account](https://cl
For this example, we will use a single document. In a real-world scenario, you would have multiple documents to index.
```ts
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: essay, id_: "essay" });
const index = await VectorStoreIndex.fromDocuments([document]);
@@ -88,8 +67,13 @@ const results = await queryEngine.query({
## Full Example
```ts
import { Gemini, GEMINI_MODEL } from "@llamaindex/google";
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import {
Gemini,
Document,
VectorStoreIndex,
Settings,
GEMINI_MODEL,
} from "llamaindex";
Settings.llm = new Gemini({
model: GEMINI_MODEL.GEMINI_PRO,
@@ -5,24 +5,6 @@ title: Groq
import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock';
import CodeSource from "!raw-loader!../../../../../../../../../examples/groq.ts";
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/groq
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/groq
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/groq
```
</Tabs>
## Usage
First, create an API key at the [Groq Console](https://console.groq.com/keys). Then save it in your environment:
@@ -34,8 +16,7 @@ export GROQ_API_KEY=<your-api-key>
The initialize the Groq module.
```ts
import { Groq } from "@llamaindex/groq";
import { Settings } from "llamaindex";
import { Groq, Settings } from "llamaindex";
Settings.llm = new Groq({
// If you do not wish to set your API key in the environment, you may
@@ -49,8 +30,6 @@ Settings.llm = new Groq({
For this example, we will use a single document. In a real-world scenario, you would have multiple documents to index.
```ts
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: essay, id_: "essay" });
const index = await VectorStoreIndex.fromDocuments([document]);
@@ -2,29 +2,10 @@
title: LLama2
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/replicate
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/replicate
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/replicate
```
</Tabs>
## Usage
```ts
import { LlamaDeuce, DeuceChatStrategy } from "@llamaindex/replicate";
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import { Ollama, Settings, DeuceChatStrategy } from "llamaindex";
Settings.llm = new LlamaDeuce({ chatStrategy: DeuceChatStrategy.META });
```
@@ -32,8 +13,12 @@ Settings.llm = new LlamaDeuce({ chatStrategy: DeuceChatStrategy.META });
## Usage with Replication
```ts
import { Settings } from "llamaindex";
import { LlamaDeuce, DeuceChatStrategy, ReplicateSession } from "@llamaindex/replicate";
import {
Ollama,
ReplicateSession,
Settings,
DeuceChatStrategy,
} from "llamaindex";
const replicateSession = new ReplicateSession({
replicateKey,
@@ -70,8 +55,13 @@ const results = await queryEngine.query({
## Full Example
```ts
import { LlamaDeuce, DeuceChatStrategy } from "@llamaindex/replicate";
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import {
LlamaDeuce,
Document,
VectorStoreIndex,
Settings,
DeuceChatStrategy,
} from "llamaindex";
// Use the LlamaDeuce LLM
Settings.llm = new LlamaDeuce({ chatStrategy: DeuceChatStrategy.META });
@@ -2,29 +2,10 @@
title: Mistral
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/mistral
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/mistral
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/mistral
```
</Tabs>
## Usage
```ts
import { MistralAI } from "@llamaindex/mistral";
import { Settings } from "llamaindex";
import { MistralAI, Settings } from "llamaindex";
Settings.llm = new MistralAI({
model: "mistral-tiny",
@@ -37,8 +18,6 @@ Settings.llm = new MistralAI({
For this example, we will use a single document. In a real-world scenario, you would have multiple documents to index.
```ts
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: essay, id_: "essay" });
const index = await VectorStoreIndex.fromDocuments([document]);
@@ -59,8 +38,7 @@ const results = await queryEngine.query({
## Full Example
```ts
import { MistralAI } from "@llamaindex/mistral";
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import { MistralAI, Document, VectorStoreIndex, Settings } from "llamaindex";
// Use the MistralAI LLM
Settings.llm = new MistralAI({ model: "mistral-tiny" });
@@ -2,30 +2,10 @@
title: Ollama
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/ollama
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/ollama
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/ollama
```
</Tabs>
## Usage
```ts
import { Ollama } from "@llamaindex/ollama";
import { Settings } from "llamaindex";
import { Ollama, Settings } from "llamaindex";
Settings.llm = ollamaLLM;
Settings.embedModel = ollamaLLM;
@@ -36,8 +16,6 @@ Settings.embedModel = ollamaLLM;
For this example, we will use a single document. In a real-world scenario, you would have multiple documents to index.
```ts
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: essay, id_: "essay" });
const index = await VectorStoreIndex.fromDocuments([document]);
@@ -58,8 +36,7 @@ const results = await queryEngine.query({
## Full Example
```ts
import { Ollama } from "@llamaindex/ollama";
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import { Ollama, Document, VectorStoreIndex, Settings } from "llamaindex";
import fs from "fs/promises";
@@ -2,28 +2,8 @@
title: OpenAI
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai
```
</Tabs>
```ts
import { OpenAI } from "@llamaindex/openai";
import { Settings } from "llamaindex";
import { OpenAI, Settings } from "llamaindex";
Settings.llm = new OpenAI({ model: "gpt-3.5-turbo", temperature: 0, apiKey: <YOUR_API_KEY> });
```
@@ -39,8 +19,6 @@ export OPENAI_API_KEY="<YOUR_API_KEY>"
For this example, we will use a single document. In a real-world scenario, you would have multiple documents to index.
```ts
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: essay, id_: "essay" });
const index = await VectorStoreIndex.fromDocuments([document]);
@@ -61,8 +39,7 @@ const results = await queryEngine.query({
## Full Example
```ts
import { OpenAI } from "@llamaindex/openai";
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import { OpenAI, Document, VectorStoreIndex, Settings } from "llamaindex";
// Use the OpenAI LLM
Settings.llm = new OpenAI({ model: "gpt-3.5-turbo", temperature: 0 });
@@ -2,30 +2,10 @@
title: Portkey LLM
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/portkey-ai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/portkey-ai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/portkey-ai
```
</Tabs>
## Usage
```ts
import { Portkey } from "@llamaindex/portkey-ai";
import { Settings } from "llamaindex";
import { Portkey, Settings } from "llamaindex";
Settings.llm = new Portkey({
apiKey: "<YOUR_API_KEY>",
@@ -37,8 +17,6 @@ Settings.llm = new Portkey({
For this example, we will use a single document. In a real-world scenario, you would have multiple documents to index.
```ts
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: essay, id_: "essay" });
const index = await VectorStoreIndex.fromDocuments([document]);
@@ -59,8 +37,7 @@ const results = await queryEngine.query({
## Full Example
```ts
import { Portkey } from "@llamaindex/portkey-ai";
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import { Portkey, Document, VectorStoreIndex, Settings } from "llamaindex";
// Use the Portkey LLM
Settings.llm = new Portkey({
@@ -2,28 +2,10 @@
title: Together LLM
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex
```
```shell tab="yarn"
yarn add llamaindex
```
```shell tab="pnpm"
pnpm add llamaindex
```
</Tabs>
## Usage
```ts
import { Settings, TogetherLLM } from "llamaindex";
import { TogetherLLM, Settings } from "llamaindex";
Settings.llm = new TogetherLLM({
apiKey: "<YOUR_API_KEY>",
@@ -35,8 +17,6 @@ Settings.llm = new TogetherLLM({
For this example, we will use a single document. In a real-world scenario, you would have multiple documents to index.
```ts
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: essay, id_: "essay" });
const index = await VectorStoreIndex.fromDocuments([document]);
@@ -57,8 +37,7 @@ const results = await queryEngine.query({
## Full Example
```ts
import { TogetherLLM } from "@llamaindex/together";
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import { TogetherLLM, Document, VectorStoreIndex, Settings } from "llamaindex";
Settings.llm = new TogetherLLM({
apiKey: "<YOUR_API_KEY>",
@@ -2,31 +2,12 @@
title: Large Language Models (LLMs)
---
The LLM is responsible for reading text and generating natural language responses to queries. By default, LlamaIndex.TS uses `gpt-4o`.
The LLM is responsible for reading text and generating natural language responses to queries. By default, LlamaIndex.TS uses `gpt-3.5-turbo`.
The LLM can be explicitly updated through `Settings`.
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai
```
</Tabs>
```typescript
import { OpenAI } from "@llamaindex/openai";
import { Settings } from "llamaindex";
import { OpenAI, Settings } from "llamaindex";
Settings.llm = new OpenAI({ model: "gpt-3.5-turbo", temperature: 0 });
```
@@ -5,8 +5,7 @@ title: NodeParser
The `NodeParser` in LlamaIndex is responsible for splitting `Document` objects into more manageable `Node` objects. When you call `.fromDocuments()`, the `NodeParser` from the `Settings` is used to do this automatically for you. Alternatively, you can use it to split documents ahead of time.
```typescript
import { Document } from "llamaindex";
import { SentenceSplitter } from "llamaindex";
import { Document, SentenceSplitter } from "llamaindex";
const nodeParser = new SentenceSplitter();
@@ -31,7 +30,6 @@ The `MarkdownNodeParser` is a more advanced `NodeParser` that can handle markdow
```typescript
import { MarkdownNodeParser } from "llamaindex";
import { Document } from "llamaindex";
const nodeParser = new MarkdownNodeParser();
@@ -8,28 +8,20 @@ The Cohere Reranker is a postprocessor that uses the Cohere API to rerank the re
Firstly, you will need to install the `llamaindex` package.
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/cohere @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/cohere @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/cohere @llamaindex/openai
```
</Tabs>
```bash
pnpm install llamaindex
```
Now, you will need to sign up for an API key at [Cohere](https://cohere.ai/). Once you have your API key you can import the necessary modules and create a new instance of the `CohereRerank` class.
```ts
import { OpenAI } from "@llamaindex/openai";
import { CohereRerank } from "@llamaindex/cohere";
import { Document, Settings, VectorStoreIndex } from "llamaindex";
import {
CohereRerank,
Document,
OpenAI,
VectorStoreIndex,
Settings,
} from "llamaindex";
```
## Load and index documents
@@ -2,24 +2,6 @@
title: Node Postprocessors
---
## Installation
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/cohere @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/cohere @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/cohere @llamaindex/openai
```
</Tabs>
## Concept
Node postprocessors are a set of modules that take a set of nodes, and apply some kind of transformation or filtering before returning them.
@@ -33,8 +15,12 @@ LlamaIndex offers several node postprocessors for immediate use, while also prov
An example of using a node postprocessors is below:
```ts
import { CohereRerank } from "@llamaindex/cohere";
import { Node, NodeWithScore, SimilarityPostprocessor, TextNode } from "llamaindex";
import {
Node,
NodeWithScore,
SimilarityPostprocessor,
CohereRerank,
} from "llamaindex";
const nodes: NodeWithScore[] = [
{
@@ -74,9 +60,7 @@ Most commonly, node-postprocessors will be used in a query engine, where they ar
### Using Node Postprocessors in a Query Engine
```ts
import { CohereRerank } from "@llamaindex/cohere";
import { OpenAI } from "@llamaindex/openai";
import { Node, NodeWithScore, SimilarityPostprocessor, Settings, TextNode } from "llamaindex";
import { Node, NodeWithScore, SimilarityPostprocessor, CohereRerank, Settings } from "llamaindex";
// Use OpenAI LLM
Settings.llm = new OpenAI({ model: "gpt-3.5-turbo", temperature: 0.1 });
@@ -94,9 +78,9 @@ const nodes: NodeWithScore[] = [
// cohere rerank: rerank nodes given query using trained model
const reranker = new CohereRerank({
apiKey: "<COHERE_API_KEY>",
apiKey: "<COHERE_API_KEY>,
topN: 2,
});
})
const document = new Document({ text: "essay", id_: "essay" });
@@ -8,28 +8,20 @@ The Jina AI Reranker is a postprocessor that uses the Jina AI Reranker API to re
Firstly, you will need to install the `llamaindex` package.
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai
```
</Tabs>
```bash
pnpm install llamaindex
```
Now, you will need to sign up for an API key at [Jina AI](https://jina.ai/reranker). Once you have your API key you can import the necessary modules and create a new instance of the `JinaAIReranker` class.
```ts
import { OpenAI } from "@llamaindex/openai";
import { Document, Settings, VectorStoreIndex, JinaAIReranker } from "llamaindex";
import {
JinaAIReranker,
Document,
OpenAI,
VectorStoreIndex,
Settings,
} from "llamaindex";
```
## Load and index documents
@@ -17,33 +17,20 @@ To find out more about the latest features and updates, visit the [mixedbread.ai
First, you will need to install the `llamaindex` package.
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai @llamaindex/mixedbread
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai @llamaindex/mixedbread
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai @llamaindex/mixedbread
```
</Tabs>
```bash
pnpm install llamaindex
```
Next, sign up for an API key at [mixedbread.ai](https://mixedbread.ai/). Once you have your API key, you can import the necessary modules and create a new instance of the `MixedbreadAIReranker` class.
```ts
import {
MixedbreadAIReranker,
Document,
OpenAI,
VectorStoreIndex,
Settings,
} from "llamaindex";
import { OpenAI } from "@llamaindex/openai";
import { MixedbreadAIReranker } from "@llamaindex/mixedbread";
```
## Usage with LlamaIndex
@@ -10,27 +10,19 @@ You can also check our multi-tenancy blog post to see how metadata filtering can
Firstly if you haven't already, you need to install the `llamaindex` package:
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai @llamaindex/chroma
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai @llamaindex/chroma
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai @llamaindex/chroma
```
</Tabs>
```bash
pnpm i llamaindex
```
Then you can import the necessary modules from `llamaindex`:
```ts
import { Document, VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
import { ChromaVectorStore } from "@llamaindex/chroma";
import {
ChromaVectorStore,
Document,
VectorStoreIndex,
storageContextFromDefaults,
} from "llamaindex";
const collectionName = "dog_colors";
```
@@ -103,8 +95,12 @@ Besides using the equal operator (`==`), you can also use a whole set of differe
## Full Code
```ts
import { Document, VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
import { ChromaVectorStore } from "@llamaindex/chroma";
import {
ChromaVectorStore,
Document,
VectorStoreIndex,
storageContextFromDefaults,
} from "llamaindex";
const collectionName = "dog_colors";
@@ -8,24 +8,13 @@ In this tutorial, we define a custom router query engine that selects one out of
First, we need to install import the necessary modules from `llamaindex`:
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
<Tabs groupId="install" items={["npm", "yarn", "pnpm"]} persist>
```shell tab="npm"
npm install llamaindex @llamaindex/openai @llamaindex/readers
```
```shell tab="yarn"
yarn add llamaindex @llamaindex/openai @llamaindex/readers
```
```shell tab="pnpm"
pnpm add llamaindex @llamaindex/openai @llamaindex/readers
```
</Tabs>
```bash
pnpm i lamaindex
```
```ts
import {
OpenAI,
RouterQueryEngine,
SimpleDirectoryReader,
SentenceSplitter,
@@ -33,8 +22,6 @@ import {
VectorStoreIndex,
Settings,
} from "llamaindex";
import { OpenAI } from "@llamaindex/openai";
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
```
## Loading Data
@@ -116,6 +103,7 @@ console.log({
```ts
import {
OpenAI,
RouterQueryEngine,
SimpleDirectoryReader,
SentenceSplitter,
@@ -123,8 +111,6 @@ import {
VectorStoreIndex,
Settings,
} from "llamaindex";
import { OpenAI } from "@llamaindex/openai";
import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
Settings.llm = new OpenAI();
Settings.nodeParser = new SentenceSplitter({
@@ -18,7 +18,7 @@ The ResponseSynthesizer is responsible for sending the query, nodes, and prompt
chunk.
```typescript
import { NodeWithScore, TextNode, ResponseSynthesizer } from "llamaindex";
import { NodeWithScore, ResponseSynthesizer, TextNode } from "llamaindex";
const responseSynthesizer = new ResponseSynthesizer();
@@ -13,22 +13,6 @@ 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.
@@ -50,59 +34,51 @@ Events are user-defined classes that extend `WorkflowEvent` and contain arbitrar
```typescript
const llm = new OpenAI();
...
const jokeFlow = new Workflow<unknown, string, string>();
const jokeFlow = new Workflow({ verbose: true });
```
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.
Our workflow is implemented by initiating the `Workflow` class. For simplicity, we created a `OpenAI` llm instance.
### Workflow Entry Points
```typescript
const generateJoke = async (_: unknown, ev: StartEvent<string>) => {
const prompt = `Write your best joke about ${ev.data}.`;
const generateJoke = async (_context: Context, ev: StartEvent) => {
const prompt = `Write your best joke about ${ev.data.input}.`;
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`. 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.
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.
To add this step to the workflow, we use the `addStep` method with an object specifying the input and output event types:
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:
```typescript
jokeFlow.addStep(
{
inputs: [StartEvent<string>],
outputs: [JokeEvent],
},
generateJoke
);
jokeFlow.addStep(StartEvent, generateJoke);
```
### Workflow Exit Points
```typescript
const critiqueJoke = async (_: unknown, ev: JokeEvent) => {
const critiqueJoke = async (_context: Context, ev: JokeEvent) => {
const prompt = `Give a thorough critique of the following joke: ${ev.data.joke}`;
const response = await llm.complete({ prompt });
return new StopEvent(response.text);
return new StopEvent({ result: response.text });
};
```
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.
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.
Add this step to the workflow:
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:
```typescript
jokeFlow.addStep(
{
inputs: [JokeEvent],
outputs: [StopEvent<string>],
},
critiqueJoke
);
jokeFlow.addStep(JokeEvent, critiqueJoke);
```
### Running the Workflow
@@ -114,25 +90,42 @@ 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.
## Working with Shared Context/State
### Validating Workflows
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:
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:
```typescript
import { HandlerContext } from "@llamaindex/workflow";
jokeFlow.addStep(StartEvent, generateJoke, { outputs: JokeEvent });
jokeFlow.addStep(JokeEvent, critiqueJoke, { outputs: StopEvent });
```
type MyContextData = {
query: string;
intermediateResults: any[];
}
To validate a workflow, you need to call the `validate` method:
const query = async (context: HandlerContext<MyContextData>, ev: MyEvent) => {
```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/core/workflow";
const query = async (context: Context, ev: MyEvent) => {
// get the query from the context
const query = context.data.query;
const query = context.get("query");
// do something with context and event
const val = ...
const result = ...
// store in context
context.data.intermediateResults.push(val);
context.set("key", val);
return new StopEvent({ result });
};
@@ -145,15 +138,28 @@ 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, 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 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 response = await llm.complete({ prompt });
return new StopEvent({ result: response.text });
};
```
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.
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.
## Manually Triggering Events
+1 -8
View File
@@ -1,13 +1,6 @@
{
"plugin": ["typedoc-plugin-markdown", "typedoc-plugin-merge-modules"],
"entryPoints": ["../../packages/**/src/index.ts"],
"exclude": [
"../../packages/autotool/**/src/index.ts",
"**/node_modules/**",
"**/dist/**",
"**/test/**",
"**/tests/**"
],
"entryPoints": ["../../packages/llamaindex/src/index.ts"],
"tsconfig": "../../tsconfig.json",
"readme": "none",
"sourceLinkTemplate": "https://github.com/run-llama/LlamaIndexTS/blob/{gitRevision}/{path}#L{line}",
-1
View File
@@ -1,2 +1 @@
logs
.temp
-13
View File
@@ -1,18 +1,5 @@
# @llamaindex/core-e2e
## 0.1.0
### Minor Changes
- 6a4a737: Remove re-exports from llamaindex main package
## 0.0.8
### Patch Changes
- 34faf48: chore: move vector stores to their own packages
- 9456616: refactor: @llamaindex/postgres
## 0.0.7
### Patch Changes
-11
View File
@@ -1,11 +0,0 @@
# @llamaindex/cloudflare-hono
## 0.1.0
### Minor Changes
- 6a4a737: Remove re-exports from llamaindex main package
### Patch Changes
- b490376: Remove deprecated ServiceContext
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/cloudflare-hono",
"version": "0.1.0",
"version": "0.0.0",
"private": true,
"scripts": {
"deploy": "wrangler deploy",
+12 -9
View File
@@ -17,21 +17,23 @@ 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,
SentenceSplitter,
OpenAI,
OpenAIEmbedding,
} = await import("llamaindex");
const { OpenAIAgent, OpenAI, OpenAIEmbedding } = await import(
"@llamaindex/openai"
const { PineconeVectorStore } = await import(
"llamaindex/vector-store/PineconeVectorStore"
);
const { PineconeVectorStore } = await import("@llamaindex/pinecone");
Settings.llm = new OpenAI({
const llm = new OpenAI({
model: "gpt-4o-mini",
apiKey: c.env.OPENAI_API_KEY,
});
@@ -41,7 +43,8 @@ app.post("/llm", async (c) => {
apiKey: c.env.OPENAI_API_KEY,
});
Settings.nodeParser = new SentenceSplitter({
const serviceContext = serviceContextFromDefaults({
llm,
chunkSize: 8191,
chunkOverlap: 0,
});
@@ -50,7 +53,7 @@ app.post("/llm", async (c) => {
namespace: "8xolsn4ulEQGdhnhP76yCzfLHdOZ",
});
const index = await VectorStoreIndex.fromVectorStore(store);
const index = await VectorStoreIndex.fromVectorStore(store, serviceContext);
const retriever = index.asRetriever({
similarityTopK: 3,
@@ -1,72 +1,5 @@
# @llamaindex/cloudflare-worker-agent-test
## 0.0.135
### Patch Changes
- Updated dependencies [6d37d44]
- llamaindex@0.9.1
## 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
- llamaindex@0.8.37
## 0.0.132
### Patch Changes
- Updated dependencies [cb608b5]
- llamaindex@0.8.36
## 0.0.131
### Patch Changes
- llamaindex@0.8.35
## 0.0.130
### Patch Changes
- Updated dependencies [9f8ad37]
- llamaindex@0.8.34
## 0.0.129
### Patch Changes
- llamaindex@0.8.33
## 0.0.128
### Patch Changes
- Updated dependencies [34faf48]
- Updated dependencies [4df1fe6]
- Updated dependencies [9456616]
- Updated dependencies [1931bbc]
- llamaindex@0.8.32
## 0.0.127
### Patch Changes
- Updated dependencies [d211b7a]
- Updated dependencies [0ebbfc1]
- llamaindex@0.8.31
## 0.0.126
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/cloudflare-worker-agent-test",
"version": "0.0.135",
"version": "0.0.126",
"type": "module",
"private": true,
"scripts": {
@@ -1,46 +1,5 @@
# @llamaindex/llama-parse-browser-test
## 0.0.46
### Patch Changes
- @llamaindex/cloud@3.0.1
## 0.0.45
### Patch Changes
- @llamaindex/cloud@3.0.0
## 0.0.44
### Patch Changes
- Updated dependencies [1c908fd]
- @llamaindex/cloud@2.0.24
## 0.0.43
### Patch Changes
- Updated dependencies [cb608b5]
- @llamaindex/cloud@2.0.23
## 0.0.42
### Patch Changes
- Updated dependencies [d6c270e]
- @llamaindex/cloud@2.0.22
## 0.0.41
### Patch Changes
- Updated dependencies [5dec9f9]
- Updated dependencies [fd9c829]
- @llamaindex/cloud@2.0.21
## 0.0.40
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/llama-parse-browser-test",
"private": true,
"version": "0.0.46",
"version": "0.0.40",
"type": "module",
"scripts": {
"dev": "vite",
@@ -10,7 +10,7 @@
},
"devDependencies": {
"typescript": "^5.7.2",
"vite": "^5.4.12",
"vite": "^5.4.11",
"vite-plugin-wasm": "^3.3.0"
},
"dependencies": {
+1 -1
View File
@@ -1,4 +1,4 @@
import { LlamaParseReader } from "@llamaindex/cloud";
import { LlamaParseReader } from "@llamaindex/cloud/reader";
import "./style.css";
new LlamaParseReader();
-67
View File
@@ -1,72 +1,5 @@
# @llamaindex/next-agent-test
## 0.1.135
### Patch Changes
- Updated dependencies [6d37d44]
- llamaindex@0.9.1
## 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
- llamaindex@0.8.37
## 0.1.132
### Patch Changes
- Updated dependencies [cb608b5]
- llamaindex@0.8.36
## 0.1.131
### Patch Changes
- llamaindex@0.8.35
## 0.1.130
### Patch Changes
- Updated dependencies [9f8ad37]
- llamaindex@0.8.34
## 0.1.129
### Patch Changes
- llamaindex@0.8.33
## 0.1.128
### Patch Changes
- Updated dependencies [34faf48]
- Updated dependencies [4df1fe6]
- Updated dependencies [9456616]
- Updated dependencies [1931bbc]
- llamaindex@0.8.32
## 0.1.127
### Patch Changes
- Updated dependencies [d211b7a]
- Updated dependencies [0ebbfc1]
- llamaindex@0.8.31
## 0.1.126
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-agent-test",
"version": "0.1.135",
"version": "0.1.126",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,72 +1,5 @@
# test-edge-runtime
## 0.1.134
### Patch Changes
- Updated dependencies [6d37d44]
- llamaindex@0.9.1
## 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
- llamaindex@0.8.37
## 0.1.131
### Patch Changes
- Updated dependencies [cb608b5]
- llamaindex@0.8.36
## 0.1.130
### Patch Changes
- llamaindex@0.8.35
## 0.1.129
### Patch Changes
- Updated dependencies [9f8ad37]
- llamaindex@0.8.34
## 0.1.128
### Patch Changes
- llamaindex@0.8.33
## 0.1.127
### Patch Changes
- Updated dependencies [34faf48]
- Updated dependencies [4df1fe6]
- Updated dependencies [9456616]
- Updated dependencies [1931bbc]
- llamaindex@0.8.32
## 0.1.126
### Patch Changes
- Updated dependencies [d211b7a]
- Updated dependencies [0ebbfc1]
- llamaindex@0.8.31
## 0.1.125
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/nextjs-edge-runtime-test",
"version": "0.1.134",
"version": "0.1.125",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,80 +1,5 @@
# @llamaindex/next-node-runtime
## 0.1.1
### Patch Changes
- Updated dependencies [6d37d44]
- llamaindex@0.9.1
- @llamaindex/huggingface@0.0.37
- @llamaindex/readers@2.0.1
## 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
- llamaindex@0.8.37
## 0.0.113
### Patch Changes
- Updated dependencies [cb608b5]
- llamaindex@0.8.36
## 0.0.112
### Patch Changes
- llamaindex@0.8.35
## 0.0.111
### Patch Changes
- Updated dependencies [9f8ad37]
- llamaindex@0.8.34
## 0.0.110
### Patch Changes
- llamaindex@0.8.33
## 0.0.109
### Patch Changes
- Updated dependencies [34faf48]
- Updated dependencies [4df1fe6]
- Updated dependencies [9456616]
- Updated dependencies [1931bbc]
- llamaindex@0.8.32
## 0.0.108
### Patch Changes
- Updated dependencies [d211b7a]
- Updated dependencies [0ebbfc1]
- llamaindex@0.8.31
## 0.0.107
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-node-runtime-test",
"version": "0.1.1",
"version": "0.0.107",
"private": true,
"scripts": {
"dev": "next dev",
@@ -9,8 +9,6 @@
},
"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,24 +0,0 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
@@ -1,8 +0,0 @@
# vite-import-llamaindex
## 0.0.1
### Patch Changes
- Updated dependencies [6d37d44]
- llamaindex@0.9.1
@@ -1,24 +0,0 @@
{
"name": "vite-import-llamaindex",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"build": "vite build",
"size-limit": "size-limit"
},
"size-limit": [
{
"path": "dist/LlamaIndexImportTest.js"
}
],
"devDependencies": {
"@size-limit/preset-big-lib": "^11.1.6",
"size-limit": "^11.1.6",
"typescript": "^5.7.2",
"vite": "^6.1.0"
},
"dependencies": {
"llamaindex": "workspace:*"
}
}
@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

@@ -1,7 +0,0 @@
import "llamaindex";
document.querySelector<HTMLDivElement>("#app")!.innerHTML = `
<div>
Hello World!
</div>
`;
@@ -1,24 +0,0 @@
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true
},
"include": ["src", "vite.config.ts"]
}
@@ -1,16 +0,0 @@
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import { defineConfig } from "vite";
const __dirname = dirname(fileURLToPath(import.meta.url));
export default defineConfig({
build: {
lib: {
entry: resolve(__dirname, "src/main.ts"),
name: "LlamaIndexImportTest",
fileName: "LlamaIndexImportTest",
formats: ["es", "cjs"],
},
},
});
@@ -1,74 +1,5 @@
# @llamaindex/waku-query-engine-test
## 0.0.135
### Patch Changes
- Updated dependencies [cc50c9c]
- Updated dependencies [6d37d44]
- @llamaindex/env@0.1.28
- llamaindex@0.9.1
## 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
- llamaindex@0.8.37
## 0.0.132
### Patch Changes
- Updated dependencies [cb608b5]
- llamaindex@0.8.36
## 0.0.131
### Patch Changes
- llamaindex@0.8.35
## 0.0.130
### Patch Changes
- Updated dependencies [9f8ad37]
- llamaindex@0.8.34
## 0.0.129
### Patch Changes
- llamaindex@0.8.33
## 0.0.128
### Patch Changes
- Updated dependencies [34faf48]
- Updated dependencies [4df1fe6]
- Updated dependencies [9456616]
- Updated dependencies [1931bbc]
- llamaindex@0.8.32
## 0.0.127
### Patch Changes
- Updated dependencies [d211b7a]
- Updated dependencies [0ebbfc1]
- llamaindex@0.8.31
## 0.0.126
### Patch Changes

Some files were not shown because too many files have changed in this diff Show More