mirror of
https://github.com/run-llama/LlamaIndexTS.git
synced 2026-07-18 08:34:54 -04:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e4c7113614 | |||
| 38da40bc98 | |||
| 4d50ca4d84 | |||
| 8b5253a297 | |||
| ea15e75c89 |
@@ -1,5 +1,25 @@
|
|||||||
# @llamaindex/doc
|
# @llamaindex/doc
|
||||||
|
|
||||||
|
## 0.2.44
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 38da40b: feat: VectoryMemoryBlock
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
- @llamaindex/cloud@4.0.26
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
- @llamaindex/node-parser@2.0.17
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
- @llamaindex/readers@3.1.16
|
||||||
|
- @llamaindex/workflow@1.1.17
|
||||||
|
|
||||||
|
## 0.2.43
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- ea15e75: Minor updates in deployment docs
|
||||||
|
|
||||||
## 0.2.42
|
## 0.2.42
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/doc",
|
"name": "@llamaindex/doc",
|
||||||
"version": "0.2.42",
|
"version": "0.2.44",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "fumadocs-mdx",
|
"postinstall": "fumadocs-mdx",
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ export async function POST(request: NextRequest) {
|
|||||||
const agent = await initializeAgent();
|
const agent = await initializeAgent();
|
||||||
const result = await agent.run(message);
|
const result = await agent.run(message);
|
||||||
|
|
||||||
return NextResponse.json({ response: result.result });
|
return NextResponse.json({ response: result.data });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Chat error:", error);
|
console.error("Chat error:", error);
|
||||||
return NextResponse.json(
|
return NextResponse.json(
|
||||||
@@ -132,7 +132,7 @@ export default async function handler(
|
|||||||
const agent = await initializeAgent();
|
const agent = await initializeAgent();
|
||||||
const result = await agent.run(message);
|
const result = await agent.run(message);
|
||||||
|
|
||||||
res.json({ response: result.result });
|
res.json({ response: result.data });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Chat error:", error);
|
console.error("Chat error:", error);
|
||||||
res.status(500).json({ error: "Internal server error" });
|
res.status(500).json({ error: "Internal server error" });
|
||||||
@@ -220,7 +220,7 @@ export async function POST(request: NextRequest) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const result = await myAgent.run(message);
|
const result = await myAgent.run(message);
|
||||||
return NextResponse.json({ response: result.result });
|
return NextResponse.json({ response: result.data });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
return NextResponse.json({ error: error.message }, { status: 500 });
|
||||||
}
|
}
|
||||||
@@ -233,11 +233,40 @@ Implement streaming for better user experience:
|
|||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
// app/api/chat-stream/route.ts
|
// app/api/chat-stream/route.ts
|
||||||
|
import { agent } from "@llamaindex/workflow";
|
||||||
|
import { tool } from "llamaindex";
|
||||||
|
import { openai } from "@llamaindex/openai";
|
||||||
import { agentStreamEvent } from "@llamaindex/workflow";
|
import { agentStreamEvent } from "@llamaindex/workflow";
|
||||||
import { NextRequest } from "next/server";
|
import { NextRequest } from "next/server";
|
||||||
|
import { z } from "zod";
|
||||||
|
|
||||||
// Assume myAgent is initialized elsewhere
|
// Initialize agent once (consider using a singleton pattern)
|
||||||
declare const myAgent: any;
|
let myAgent: any = null;
|
||||||
|
|
||||||
|
async function initializeAgent() {
|
||||||
|
if (myAgent) return myAgent;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const greetTool = tool({
|
||||||
|
name: "greet",
|
||||||
|
description: "Greets a user with their name",
|
||||||
|
parameters: z.object({
|
||||||
|
name: z.string(),
|
||||||
|
}),
|
||||||
|
execute: ({ name }) => `Hello, ${name}! How can I help you today?`,
|
||||||
|
});
|
||||||
|
|
||||||
|
myAgent = agent({
|
||||||
|
tools: [greetTool],
|
||||||
|
llm: openai({ model: "gpt-4o-mini" }),
|
||||||
|
});
|
||||||
|
|
||||||
|
return myAgent;
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Failed to initialize agent:", error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export async function POST(request: NextRequest) {
|
export async function POST(request: NextRequest) {
|
||||||
const { message } = await request.json();
|
const { message } = await request.json();
|
||||||
@@ -245,9 +274,10 @@ export async function POST(request: NextRequest) {
|
|||||||
const stream = new ReadableStream({
|
const stream = new ReadableStream({
|
||||||
async start(controller) {
|
async start(controller) {
|
||||||
try {
|
try {
|
||||||
const context = myAgent.runStream(message);
|
const agent = await initializeAgent();
|
||||||
|
const events = agent.runStream(message);
|
||||||
|
|
||||||
for await (const event of context) {
|
for await (const event of events) {
|
||||||
if (agentStreamEvent.include(event)) {
|
if (agentStreamEvent.include(event)) {
|
||||||
controller.enqueue(new TextEncoder().encode(event.data.delta));
|
controller.enqueue(new TextEncoder().encode(event.data.delta));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ app.post('/api/chat', async (req, res) => {
|
|||||||
try {
|
try {
|
||||||
const { message } = req.body;
|
const { message } = req.body;
|
||||||
const result = await myAgent.run(message);
|
const result = await myAgent.run(message);
|
||||||
res.json({ response: result.result });
|
res.json({ response: result.data });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
res.status(500).json({ error: 'Chat failed' });
|
res.status(500).json({ error: 'Chat failed' });
|
||||||
}
|
}
|
||||||
@@ -110,7 +110,7 @@ fastify.post('/api/chat', async (request, reply) => {
|
|||||||
try {
|
try {
|
||||||
const { message } = request.body as { message: string };
|
const { message } = request.body as { message: string };
|
||||||
const result = await myAgent.run(message);
|
const result = await myAgent.run(message);
|
||||||
return { response: result.result };
|
return { response: result.data };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
reply.status(500).send({ error: 'Chat failed' });
|
reply.status(500).send({ error: 'Chat failed' });
|
||||||
}
|
}
|
||||||
@@ -162,7 +162,7 @@ app.post("/api/chat", async (c) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const result = await myAgent.run(message);
|
const result = await myAgent.run(message);
|
||||||
return c.json({ response: result.result });
|
return c.json({ response: result.data });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return c.json({ error: error.message }, 500);
|
return c.json({ error: error.message }, 500);
|
||||||
}
|
}
|
||||||
@@ -187,9 +187,9 @@ app.post('/api/chat-stream', async (req, res) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const context = myAgent.runStream(message);
|
const events = myAgent.runStream(message);
|
||||||
|
|
||||||
for await (const event of context) {
|
for await (const event of events) {
|
||||||
if (agentStreamEvent.include(event)) {
|
if (agentStreamEvent.include(event)) {
|
||||||
res.write(event.data.delta);
|
res.write(event.data.delta);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export default {
|
|||||||
const { message } = await request.json();
|
const { message } = await request.json();
|
||||||
const result = await myAgent.run(message);
|
const result = await myAgent.run(message);
|
||||||
|
|
||||||
return new Response(JSON.stringify({ response: result.result }), {
|
return new Response(JSON.stringify({ response: result.data }), {
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -83,7 +83,7 @@ export default async function handler(req, res) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const result = await myAgent.run(message);
|
const result = await myAgent.run(message);
|
||||||
res.json({ response: result.result });
|
res.json({ response: result.data });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
res.status(500).json({ error: error.message });
|
res.status(500).json({ error: error.message });
|
||||||
}
|
}
|
||||||
@@ -124,7 +124,7 @@ export async function POST(request: NextRequest) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const result = await myAgent.run(message);
|
const result = await myAgent.run(message);
|
||||||
return NextResponse.json({ response: result.result });
|
return NextResponse.json({ response: result.data });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
return NextResponse.json({ error: error.message }, { status: 500 });
|
||||||
}
|
}
|
||||||
@@ -173,7 +173,7 @@ export const handler: APIGatewayProxyHandler = async (event, context) => {
|
|||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
"Access-Control-Allow-Origin": "*",
|
"Access-Control-Allow-Origin": "*",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({ response: result.result }),
|
body: JSON.stringify({ response: result.data }),
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return {
|
return {
|
||||||
@@ -222,7 +222,7 @@ export const handler: Handler = async (event, context) => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
statusCode: 200,
|
statusCode: 200,
|
||||||
body: JSON.stringify({ response: result.result }),
|
body: JSON.stringify({ response: result.data }),
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -106,34 +106,40 @@ const memory = createMemory({
|
|||||||
|
|
||||||
Long-term memory is represented as `Memory Block` objects. These objects contain information that are from previous user sessions or from the beginning of the current conversation. When memory is retrieved (by calling `getLLM`), the short-term and long-term memories are merged together within the given `tokenLimit`.
|
Long-term memory is represented as `Memory Block` objects. These objects contain information that are from previous user sessions or from the beginning of the current conversation. When memory is retrieved (by calling `getLLM`), the short-term and long-term memories are merged together within the given `tokenLimit`.
|
||||||
|
|
||||||
Currently, there are two predefined memory blocks:
|
Currently, there are three predefined memory blocks:
|
||||||
|
|
||||||
- `staticBlock`: A memory block that stores a static piece of information.
|
- `staticBlock`: A memory block that stores a static piece of information.
|
||||||
- `factExtractionBlock`: A memory block that extracts facts from the chat history.
|
- `factExtractionBlock`: A memory block that extracts facts from the chat history.
|
||||||
|
- `vectorBlock`: A memory block that stores and retrieves chat messages from a vector database using semantic similarity search. Messages are stored individually and retrieved based on their relevance to recent conversation context. Here we've passed in the `vectorStore` to use to store and retrieve the chat messages.
|
||||||
|
|
||||||
This sounds a bit complicated, but it's actually quite simple. Let's look at an example:
|
This sounds a bit complicated, but it's actually quite simple. Let's look at an example:
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
import { createMemory, factExtractionBlock, staticBlock } from "llamaindex";
|
import { createMemory, factExtractionBlock, staticBlock, vectorBlock } from "llamaindex";
|
||||||
|
import { QdrantVectorStore } from "@llamaindex/qdrant";
|
||||||
|
import { OpenAIEmbedding } from "@llamaindex/openai";
|
||||||
|
|
||||||
const memoryBlocks= [
|
const memoryBlocks= [
|
||||||
staticBlock({
|
staticBlock({
|
||||||
id: "core_info",
|
|
||||||
content: "My name is Logan, and I live in Saskatoon. I work at LlamaIndex.",
|
content: "My name is Logan, and I live in Saskatoon. I work at LlamaIndex.",
|
||||||
}),
|
}),
|
||||||
factExtractionBlock({
|
factExtractionBlock({
|
||||||
id: "user-extracted_info",
|
|
||||||
priority: 1,
|
priority: 1,
|
||||||
llm: llm,
|
llm: llm,
|
||||||
maxFacts: 50,
|
maxFacts: 50,
|
||||||
}),
|
}),
|
||||||
|
vectorBlock({
|
||||||
|
vectorStore: new QdrantVectorStore({ url: "http://localhost:6333" }),
|
||||||
|
priority: 2,
|
||||||
|
}),
|
||||||
];
|
];
|
||||||
```
|
```
|
||||||
|
|
||||||
Here, we've setup two memory blocks:
|
Here, we've setup three memory blocks:
|
||||||
|
|
||||||
- `core_info`: A static memory block that stores some core information about the user. This information will always be inserted into the memory. The type used is `MessageContent` to support multi-modal content.
|
- `staticBlock`: A static memory block that stores some core information about the user. This information will always be inserted into the memory. The type used is `MessageContent` to support multi-modal content.
|
||||||
- `extracted_info`: An extracted memory block that will extract information from the chat history. Here we've passed in the `llm` to use to extract facts from the chat history, and set the `maxFacts` to 50. If the number of extracted facts exceeds this limit, the `maxFacts` will be automatically summarized and reduced to leave room for new information.
|
- `factExtractionBlock`: An extracted memory block that will extract information from the chat history. Here we've passed in the `llm` to use to extract facts from the chat history, and set the `maxFacts` to 50. If the number of extracted facts exceeds this limit, the `maxFacts` will be automatically summarized and reduced to leave room for new information.
|
||||||
|
- `vectorBlock`: A vector memory block that will store in a vector database and retrieve them from there. Messages are stored individually and retrieved based on their relevance to recent conversation context. Here we've passed in the `vectorStore` to use to store and retrieve the chat messages.
|
||||||
|
|
||||||
You'll also notice that we've set the `priority` for the `factExtractionBlock` block. This is used to determine the handling when the memory blocks content (i.e. long-term memory) + short-term memory exceeds the token limit on the `Memory` object.
|
You'll also notice that we've set the `priority` for the `factExtractionBlock` block. This is used to determine the handling when the memory blocks content (i.e. long-term memory) + short-term memory exceeds the token limit on the `Memory` object.
|
||||||
|
|
||||||
@@ -158,6 +164,46 @@ When memory is retrieved (using `getLLM`), the short-term and long-term memories
|
|||||||
|
|
||||||
The amount of short-term memory included is specified by the `shortTermTokenLimitRatio`. If it's set to `0.7`, 70% of the `tokenLimit` is used for short-term memory (not including the static memory block).
|
The amount of short-term memory included is specified by the `shortTermTokenLimitRatio`. If it's set to `0.7`, 70% of the `tokenLimit` is used for short-term memory (not including the static memory block).
|
||||||
|
|
||||||
|
|
||||||
|
#### VectorBlock Configuration Options
|
||||||
|
|
||||||
|
The `vectorBlock` offers several configuration options to customize its behavior:
|
||||||
|
|
||||||
|
```ts
|
||||||
|
vectorBlock({
|
||||||
|
vectorStore: new QdrantVectorStore({ url: "http://localhost:6333" }),
|
||||||
|
priority: 2,
|
||||||
|
retrievalContextWindow: 5, // Number of recent messages to use for context when retrieving
|
||||||
|
formatTemplate: new PromptTemplate({ template: "Context: {{ context }}" }), // Custom formatting template
|
||||||
|
nodePostprocessors: [/* custom postprocessors */], // Apply processing to retrieved nodes
|
||||||
|
queryOptions: {
|
||||||
|
similarityTopK: 3, // Number of top similar results to return (default: 2)
|
||||||
|
mode: VectorStoreQueryMode.DEFAULT, // Query mode for the vector store
|
||||||
|
sessionFilterKey: "session_id", // Metadata key for session filtering (default: "session_id")
|
||||||
|
// Custom filters can be added here - session filter is automatically included
|
||||||
|
filters: {
|
||||||
|
filters: [
|
||||||
|
{ key: "custom_field", value: "custom_value", operator: "==" }
|
||||||
|
],
|
||||||
|
condition: "and"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key Configuration Options:**
|
||||||
|
|
||||||
|
- **`retrievalContextWindow`**: Number of recent messages to consider when creating the retrieval query (default: 5). A larger window provides more context but may be less precise.
|
||||||
|
- **`formatTemplate`**: Template for formatting retrieved information before adding to memory. Defaults to a simple context template.
|
||||||
|
- **`nodePostprocessors`**: Array of postprocessors to apply to retrieved nodes, useful for filtering or transforming results.
|
||||||
|
- **`queryOptions.similarityTopK`**: Number of most similar messages to retrieve from the vector store (default: 2).
|
||||||
|
- **`queryOptions.sessionFilterKey`**: Metadata key used to isolate memory between different sessions (default: "session_id").
|
||||||
|
- **`queryOptions.filters`**: Additional metadata filters for retrieval. The session filter is automatically added to ensure memory isolation.
|
||||||
|
|
||||||
|
**Session Isolation:**
|
||||||
|
|
||||||
|
The vectorBlock automatically adds a session filter using the block's ID to ensure that memories from different sessions don't interfere with each other. This filter uses the `sessionFilterKey` (default: "session_id") and can be customized if needed.
|
||||||
|
|
||||||
## Persistence with Snapshots
|
## Persistence with Snapshots
|
||||||
|
|
||||||
Save and restore memory state:
|
Save and restore memory state:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/cloudflare-worker-agent-test
|
# @llamaindex/cloudflare-worker-agent-test
|
||||||
|
|
||||||
|
## 0.0.182
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
|
||||||
## 0.0.181
|
## 0.0.181
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/cloudflare-worker-agent-test",
|
"name": "@llamaindex/cloudflare-worker-agent-test",
|
||||||
"version": "0.0.181",
|
"version": "0.0.182",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/llama-parse-browser-test
|
# @llamaindex/llama-parse-browser-test
|
||||||
|
|
||||||
|
## 0.0.81
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @llamaindex/cloud@4.0.26
|
||||||
|
|
||||||
## 0.0.80
|
## 0.0.80
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/llama-parse-browser-test",
|
"name": "@llamaindex/llama-parse-browser-test",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.80",
|
"version": "0.0.81",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/next-agent-test
|
# @llamaindex/next-agent-test
|
||||||
|
|
||||||
|
## 0.1.182
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
|
||||||
## 0.1.181
|
## 0.1.181
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/next-agent-test",
|
"name": "@llamaindex/next-agent-test",
|
||||||
"version": "0.1.181",
|
"version": "0.1.182",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# test-edge-runtime
|
# test-edge-runtime
|
||||||
|
|
||||||
|
## 0.1.181
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
|
||||||
## 0.1.180
|
## 0.1.180
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/nextjs-edge-runtime-test",
|
"name": "@llamaindex/nextjs-edge-runtime-test",
|
||||||
"version": "0.1.180",
|
"version": "0.1.181",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# @llamaindex/next-node-runtime
|
# @llamaindex/next-node-runtime
|
||||||
|
|
||||||
|
## 0.1.51
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
- @llamaindex/huggingface@0.1.22
|
||||||
|
- @llamaindex/readers@3.1.16
|
||||||
|
|
||||||
## 0.1.50
|
## 0.1.50
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/next-node-runtime-test",
|
"name": "@llamaindex/next-node-runtime-test",
|
||||||
"version": "0.1.50",
|
"version": "0.1.51",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# vite-import-llamaindex
|
# vite-import-llamaindex
|
||||||
|
|
||||||
|
## 0.0.48
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
|
||||||
## 0.0.47
|
## 0.0.47
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "vite-import-llamaindex",
|
"name": "vite-import-llamaindex",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.47",
|
"version": "0.0.48",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/waku-query-engine-test
|
# @llamaindex/waku-query-engine-test
|
||||||
|
|
||||||
|
## 0.0.182
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
|
||||||
## 0.0.181
|
## 0.0.181
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/waku-query-engine-test",
|
"name": "@llamaindex/waku-query-engine-test",
|
||||||
"version": "0.0.181",
|
"version": "0.0.182",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ await test("pinecone", async (t) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const vectorStore = new PineconeVectorStore({
|
const vectorStore = new PineconeVectorStore({
|
||||||
embeddingModel: openaiEmbedding,
|
embedModel: openaiEmbedding,
|
||||||
});
|
});
|
||||||
|
|
||||||
t.after(async () => {
|
t.after(async () => {
|
||||||
|
|||||||
@@ -1,5 +1,57 @@
|
|||||||
# examples
|
# examples
|
||||||
|
|
||||||
|
## 0.3.33
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
- @llamaindex/cloud@4.0.26
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
- @llamaindex/node-parser@2.0.17
|
||||||
|
- @llamaindex/anthropic@0.3.19
|
||||||
|
- @llamaindex/assemblyai@0.1.16
|
||||||
|
- @llamaindex/clip@0.0.68
|
||||||
|
- @llamaindex/cohere@0.0.31
|
||||||
|
- @llamaindex/deepinfra@0.0.68
|
||||||
|
- @llamaindex/discord@0.1.16
|
||||||
|
- @llamaindex/google@0.3.16
|
||||||
|
- @llamaindex/huggingface@0.1.22
|
||||||
|
- @llamaindex/jinaai@0.0.28
|
||||||
|
- @llamaindex/mistral@0.1.17
|
||||||
|
- @llamaindex/mixedbread@0.0.31
|
||||||
|
- @llamaindex/notion@0.1.16
|
||||||
|
- @llamaindex/ollama@0.1.17
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
- @llamaindex/perplexity@0.0.25
|
||||||
|
- @llamaindex/portkey-ai@0.0.59
|
||||||
|
- @llamaindex/replicate@0.0.59
|
||||||
|
- @llamaindex/bm25-retriever@0.0.6
|
||||||
|
- @llamaindex/astra@0.0.31
|
||||||
|
- @llamaindex/azure@0.1.29
|
||||||
|
- @llamaindex/chroma@0.0.31
|
||||||
|
- @llamaindex/elastic-search@0.1.17
|
||||||
|
- @llamaindex/firestore@1.0.24
|
||||||
|
- @llamaindex/milvus@0.1.26
|
||||||
|
- @llamaindex/mongodb@0.0.32
|
||||||
|
- @llamaindex/pinecone@0.1.17
|
||||||
|
- @llamaindex/postgres@0.0.60
|
||||||
|
- @llamaindex/qdrant@0.1.27
|
||||||
|
- @llamaindex/supabase@0.1.18
|
||||||
|
- @llamaindex/upstash@0.0.31
|
||||||
|
- @llamaindex/weaviate@0.0.32
|
||||||
|
- @llamaindex/vercel@0.1.17
|
||||||
|
- @llamaindex/voyage-ai@1.0.23
|
||||||
|
- @llamaindex/readers@3.1.16
|
||||||
|
- @llamaindex/tools@0.1.7
|
||||||
|
- @llamaindex/workflow@1.1.17
|
||||||
|
- @llamaindex/deepseek@0.0.29
|
||||||
|
- @llamaindex/fireworks@0.0.28
|
||||||
|
- @llamaindex/groq@0.0.84
|
||||||
|
- @llamaindex/together@0.0.28
|
||||||
|
- @llamaindex/vllm@0.0.54
|
||||||
|
- @llamaindex/xai@0.0.15
|
||||||
|
|
||||||
## 0.3.32
|
## 0.3.32
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -0,0 +1,150 @@
|
|||||||
|
/**
|
||||||
|
* Example: Vector Memory Block
|
||||||
|
*
|
||||||
|
* This example demonstrates how to use the VectorMemoryBlock to store and retrieve
|
||||||
|
* conversation history using vector similarity search. The vector memory block
|
||||||
|
* stores messages in a vector store and can retrieve relevant context based on
|
||||||
|
* semantic similarity to recent messages.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { OpenAI, OpenAIEmbedding } from "@llamaindex/openai";
|
||||||
|
import { QdrantVectorStore } from "@llamaindex/qdrant";
|
||||||
|
import { createMemory, vectorBlock } from "llamaindex";
|
||||||
|
|
||||||
|
// Set up the LLM and embedding model
|
||||||
|
const llm = new OpenAI({ model: "gpt-4.1-mini" });
|
||||||
|
const embedModel = new OpenAIEmbedding({ model: "text-embedding-3-small" });
|
||||||
|
|
||||||
|
// Simulate a conversation with some context
|
||||||
|
// This conversation has 8 messages, which is more than the token limit of 100 tokens (set below)
|
||||||
|
// The last 4 messages are kept in to short term memory block (as their tokens are in the limit)
|
||||||
|
// Whereas the first 5 messages are added to long term memory block (in here we will use the vector memory block with Qdrant)
|
||||||
|
const CONVERSATION_TURNS = [
|
||||||
|
//// This is the first 5 messages that are added to long term memory block (vector memory block)
|
||||||
|
{
|
||||||
|
role: "user",
|
||||||
|
content: "Hi, I'm Sarah and I work as a data scientist at Google.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content:
|
||||||
|
"Hello Sarah! It's great to meet you. Data science at Google must be exciting!",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "user",
|
||||||
|
content:
|
||||||
|
"Yes, I specialize in machine learning and natural language processing.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content: "That's impressive! ML and NLP are fascinating fields.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "user",
|
||||||
|
content:
|
||||||
|
"I have a PhD in Computer Science from Stanford, and I love hiking on weekends.",
|
||||||
|
},
|
||||||
|
|
||||||
|
//// This is the last 4 messages that are added to short term memory block
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content:
|
||||||
|
"Wow, Stanford PhD! And hiking is a great way to unwind from tech work.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "user",
|
||||||
|
content: "I also have two cats named Whiskers and Mittens.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content:
|
||||||
|
"Cats make wonderful companions! Whiskers and Mittens are cute names.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "user",
|
||||||
|
content: "Summary information about Sarah and her cats",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
console.log("=== Vector Memory Block Example ===\n");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a vector store. You can quickly get a local instance of Qdrant running with Docker:
|
||||||
|
* ```bash
|
||||||
|
* docker pull qdrant/qdrant
|
||||||
|
* docker run -p 6333:6333 qdrant/qdrant
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Go to http://localhost:6333/dashboard#/collections to see your data
|
||||||
|
*/
|
||||||
|
const vectorStore = new QdrantVectorStore({
|
||||||
|
url: "http://localhost:6333",
|
||||||
|
embedModel,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create a vector memory block using the factory function
|
||||||
|
const vectorMemoryBlock = vectorBlock({
|
||||||
|
vectorStore,
|
||||||
|
priority: 5,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create a memory store with the vector memory block
|
||||||
|
const memory = createMemory([], {
|
||||||
|
llm,
|
||||||
|
memoryBlocks: [vectorMemoryBlock],
|
||||||
|
tokenLimit: 100,
|
||||||
|
shortTermTokenLimitRatio: 0.7,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Store the conversation history in the vector memory
|
||||||
|
console.log(`Adding ${CONVERSATION_TURNS.length} messages to the memory...`);
|
||||||
|
for (const message of CONVERSATION_TURNS) {
|
||||||
|
await memory.add(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve relevant context for the current user request
|
||||||
|
console.log("Retrieving relevant context...");
|
||||||
|
const chatHistory = await memory.getLLM();
|
||||||
|
|
||||||
|
// You will see there's 1 generated context message from vector memory block, and 4 messages from short term memory block
|
||||||
|
console.log("Chat memory:", chatHistory);
|
||||||
|
|
||||||
|
// Now simulate the assistant responding with context
|
||||||
|
console.log("\nAssistant response with context:");
|
||||||
|
const response = await llm.chat({
|
||||||
|
messages: chatHistory,
|
||||||
|
});
|
||||||
|
console.log(response.message.content);
|
||||||
|
|
||||||
|
// Try adding more messages to the memory
|
||||||
|
const newMessages = [
|
||||||
|
{
|
||||||
|
role: "user",
|
||||||
|
content: "Write a long paragraph about weather in Tokyo",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "assistant",
|
||||||
|
content:
|
||||||
|
"The weather in Tokyo is sunny and warm. The temperature is around 20 degrees Celsius. The weather is very nice and the people are friendly.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
role: "user",
|
||||||
|
content: "What is the weather in Tokyo?",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
// Add the new messages to the memory
|
||||||
|
for (const message of newMessages) {
|
||||||
|
await memory.add(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try retrieving the new messages
|
||||||
|
const newChatHistory = await memory.getLLM();
|
||||||
|
// You can see now that new chat history will contain the nodes (separated by `\n`) in the
|
||||||
|
// context message that is generated by the vector memory block
|
||||||
|
// The number of retrieved nodes is set by `similarityTopK` in `queryOptions` of `vectorBlock`
|
||||||
|
// (default `similarityTopK` is 2)
|
||||||
|
console.log("New chat history:", newChatHistory);
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch(console.error);
|
||||||
+47
-47
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/examples",
|
"name": "@llamaindex/examples",
|
||||||
"version": "0.3.32",
|
"version": "0.3.33",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "eslint .",
|
"lint": "eslint .",
|
||||||
@@ -11,52 +11,52 @@
|
|||||||
"@azure/cosmos": "^4.1.1",
|
"@azure/cosmos": "^4.1.1",
|
||||||
"@azure/identity": "^4.4.1",
|
"@azure/identity": "^4.4.1",
|
||||||
"@azure/search-documents": "^12.1.0",
|
"@azure/search-documents": "^12.1.0",
|
||||||
"@llamaindex/anthropic": "^0.3.18",
|
"@llamaindex/anthropic": "^0.3.19",
|
||||||
"@llamaindex/assemblyai": "^0.1.15",
|
"@llamaindex/assemblyai": "^0.1.16",
|
||||||
"@llamaindex/astra": "^0.0.30",
|
"@llamaindex/astra": "^0.0.31",
|
||||||
"@llamaindex/azure": "^0.1.28",
|
"@llamaindex/azure": "^0.1.29",
|
||||||
"@llamaindex/bm25-retriever": "^0.0.5",
|
"@llamaindex/bm25-retriever": "^0.0.6",
|
||||||
"@llamaindex/chroma": "^0.0.30",
|
"@llamaindex/chroma": "^0.0.31",
|
||||||
"@llamaindex/clip": "^0.0.67",
|
"@llamaindex/clip": "^0.0.68",
|
||||||
"@llamaindex/cloud": "^4.0.25",
|
"@llamaindex/cloud": "^4.0.26",
|
||||||
"@llamaindex/cohere": "^0.0.30",
|
"@llamaindex/cohere": "^0.0.31",
|
||||||
"@llamaindex/core": "^0.6.16",
|
"@llamaindex/core": "^0.6.17",
|
||||||
"@llamaindex/deepinfra": "^0.0.67",
|
"@llamaindex/deepinfra": "^0.0.68",
|
||||||
"@llamaindex/deepseek": "^0.0.28",
|
"@llamaindex/deepseek": "^0.0.29",
|
||||||
"@llamaindex/discord": "^0.1.15",
|
"@llamaindex/discord": "^0.1.16",
|
||||||
"@llamaindex/elastic-search": "^0.1.16",
|
"@llamaindex/elastic-search": "^0.1.17",
|
||||||
"@llamaindex/env": "^0.1.30",
|
"@llamaindex/env": "^0.1.30",
|
||||||
"@llamaindex/firestore": "^1.0.23",
|
"@llamaindex/firestore": "^1.0.24",
|
||||||
"@llamaindex/fireworks": "^0.0.27",
|
"@llamaindex/fireworks": "^0.0.28",
|
||||||
"@llamaindex/google": "^0.3.15",
|
"@llamaindex/google": "^0.3.16",
|
||||||
"@llamaindex/groq": "^0.0.83",
|
"@llamaindex/groq": "^0.0.84",
|
||||||
"@llamaindex/huggingface": "^0.1.21",
|
"@llamaindex/huggingface": "^0.1.22",
|
||||||
"@llamaindex/jinaai": "^0.0.27",
|
"@llamaindex/jinaai": "^0.0.28",
|
||||||
"@llamaindex/milvus": "^0.1.25",
|
"@llamaindex/milvus": "^0.1.26",
|
||||||
"@llamaindex/mistral": "^0.1.16",
|
"@llamaindex/mistral": "^0.1.17",
|
||||||
"@llamaindex/mixedbread": "^0.0.30",
|
"@llamaindex/mixedbread": "^0.0.31",
|
||||||
"@llamaindex/mongodb": "^0.0.31",
|
"@llamaindex/mongodb": "^0.0.32",
|
||||||
"@llamaindex/node-parser": "^2.0.16",
|
"@llamaindex/node-parser": "^2.0.17",
|
||||||
"@llamaindex/notion": "^0.1.15",
|
"@llamaindex/notion": "^0.1.16",
|
||||||
"@llamaindex/ollama": "^0.1.16",
|
"@llamaindex/ollama": "^0.1.17",
|
||||||
"@llamaindex/openai": "^0.4.11",
|
"@llamaindex/openai": "^0.4.12",
|
||||||
"@llamaindex/perplexity": "^0.0.24",
|
"@llamaindex/perplexity": "^0.0.25",
|
||||||
"@llamaindex/pinecone": "^0.1.16",
|
"@llamaindex/pinecone": "^0.1.17",
|
||||||
"@llamaindex/portkey-ai": "^0.0.58",
|
"@llamaindex/portkey-ai": "^0.0.59",
|
||||||
"@llamaindex/postgres": "^0.0.59",
|
"@llamaindex/postgres": "^0.0.60",
|
||||||
"@llamaindex/qdrant": "^0.1.26",
|
"@llamaindex/qdrant": "^0.1.27",
|
||||||
"@llamaindex/readers": "^3.1.15",
|
"@llamaindex/readers": "^3.1.16",
|
||||||
"@llamaindex/replicate": "^0.0.58",
|
"@llamaindex/replicate": "^0.0.59",
|
||||||
"@llamaindex/supabase": "^0.1.17",
|
"@llamaindex/supabase": "^0.1.18",
|
||||||
"@llamaindex/together": "^0.0.27",
|
"@llamaindex/together": "^0.0.28",
|
||||||
"@llamaindex/tools": "^0.1.6",
|
"@llamaindex/tools": "^0.1.7",
|
||||||
"@llamaindex/upstash": "^0.0.30",
|
"@llamaindex/upstash": "^0.0.31",
|
||||||
"@llamaindex/vercel": "^0.1.16",
|
"@llamaindex/vercel": "^0.1.17",
|
||||||
"@llamaindex/vllm": "^0.0.53",
|
"@llamaindex/vllm": "^0.0.54",
|
||||||
"@llamaindex/voyage-ai": "^1.0.22",
|
"@llamaindex/voyage-ai": "^1.0.23",
|
||||||
"@llamaindex/weaviate": "^0.0.31",
|
"@llamaindex/weaviate": "^0.0.32",
|
||||||
"@llamaindex/workflow": "^1.1.16",
|
"@llamaindex/workflow": "^1.1.17",
|
||||||
"@llamaindex/xai": "^0.0.14",
|
"@llamaindex/xai": "^0.0.15",
|
||||||
"@notionhq/client": "^4.0.0",
|
"@notionhq/client": "^4.0.0",
|
||||||
"@pinecone-database/pinecone": "^4.0.0",
|
"@pinecone-database/pinecone": "^4.0.0",
|
||||||
"@vercel/postgres": "^0.10.0",
|
"@vercel/postgres": "^0.10.0",
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
"commander": "^12.1.0",
|
"commander": "^12.1.0",
|
||||||
"dotenv": "^17.2.0",
|
"dotenv": "^17.2.0",
|
||||||
"js-tiktoken": "^1.0.14",
|
"js-tiktoken": "^1.0.14",
|
||||||
"llamaindex": "^0.11.20",
|
"llamaindex": "^0.11.21",
|
||||||
"mongodb": "6.7.0",
|
"mongodb": "6.7.0",
|
||||||
"postgres": "^3.4.4",
|
"postgres": "^3.4.4",
|
||||||
"wikipedia": "^2.1.2",
|
"wikipedia": "^2.1.2",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ async function main() {
|
|||||||
const vectorStore = new QdrantVectorStore({
|
const vectorStore = new QdrantVectorStore({
|
||||||
url: process.env.QDRANT_URL,
|
url: process.env.QDRANT_URL,
|
||||||
apiKey: process.env.QDRANT_API_KEY,
|
apiKey: process.env.QDRANT_API_KEY,
|
||||||
embeddingModel: embedding,
|
embedModel: embedding,
|
||||||
collectionName: "gemini_test",
|
collectionName: "gemini_test",
|
||||||
});
|
});
|
||||||
const storageContext = await storageContextFromDefaults({ vectorStore });
|
const storageContext = await storageContextFromDefaults({ vectorStore });
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ async function main() {
|
|||||||
const vectorStore = new QdrantVectorStore({
|
const vectorStore = new QdrantVectorStore({
|
||||||
url: process.env.QDRANT_URL,
|
url: process.env.QDRANT_URL,
|
||||||
apiKey: process.env.QDRANT_API_KEY,
|
apiKey: process.env.QDRANT_API_KEY,
|
||||||
embeddingModel: embedding,
|
embedModel: embedding,
|
||||||
collectionName: "jina_test",
|
collectionName: "jina_test",
|
||||||
});
|
});
|
||||||
const storageContext = await storageContextFromDefaults({ vectorStore });
|
const storageContext = await storageContextFromDefaults({ vectorStore });
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/autotool
|
# @llamaindex/autotool
|
||||||
|
|
||||||
|
## 8.0.21
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
|
||||||
## 8.0.20
|
## 8.0.20
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/autotool-01-node-example
|
# @llamaindex/autotool-01-node-example
|
||||||
|
|
||||||
|
## 0.0.129
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
- @llamaindex/autotool@8.0.21
|
||||||
|
|
||||||
## 0.0.128
|
## 0.0.128
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -13,5 +13,5 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
|
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
|
||||||
},
|
},
|
||||||
"version": "0.0.128"
|
"version": "0.0.129"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
|
||||||
"directory": "packages/autotool"
|
"directory": "packages/autotool"
|
||||||
},
|
},
|
||||||
"version": "8.0.20",
|
"version": "8.0.21",
|
||||||
"description": "auto transpile your JS function to LLM Agent compatible",
|
"description": "auto transpile your JS function to LLM Agent compatible",
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/cloud
|
# @llamaindex/cloud
|
||||||
|
|
||||||
|
## 4.0.26
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 4.0.25
|
## 4.0.25
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/cloud",
|
"name": "@llamaindex/cloud",
|
||||||
"version": "4.0.25",
|
"version": "4.0.26",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/core
|
# @llamaindex/core
|
||||||
|
|
||||||
|
## 0.6.17
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 38da40b: feat: VectoryMemoryBlock
|
||||||
|
|
||||||
## 0.6.16
|
## 0.6.16
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/core",
|
"name": "@llamaindex/core",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "0.6.16",
|
"version": "0.6.17",
|
||||||
"description": "LlamaIndex Core Module",
|
"description": "LlamaIndex Core Module",
|
||||||
"exports": {
|
"exports": {
|
||||||
"./agent": {
|
"./agent": {
|
||||||
|
|||||||
@@ -39,7 +39,9 @@ export abstract class BaseMemoryBlock<
|
|||||||
*
|
*
|
||||||
* @returns The memory block content as an array of ChatMessage.
|
* @returns The memory block content as an array of ChatMessage.
|
||||||
*/
|
*/
|
||||||
abstract get(): Promise<MemoryMessage<TAdditionalMessageOptions>[]>;
|
abstract get(
|
||||||
|
messages?: MemoryMessage<TAdditionalMessageOptions>[],
|
||||||
|
): Promise<MemoryMessage<TAdditionalMessageOptions>[]>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store the messages in the memory block.
|
* Store the messages in the memory block.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
export { BaseMemoryBlock } from "./base";
|
export { BaseMemoryBlock } from "./base";
|
||||||
export { FactExtractionMemoryBlock } from "./fact";
|
export { FactExtractionMemoryBlock } from "./fact";
|
||||||
export { StaticMemoryBlock } from "./static";
|
export { StaticMemoryBlock } from "./static";
|
||||||
|
export { VectorMemoryBlock } from "./vector";
|
||||||
|
|||||||
@@ -0,0 +1,250 @@
|
|||||||
|
import type { BaseEmbedding } from "../../embeddings";
|
||||||
|
import type { BaseNodePostprocessor } from "../../postprocessor";
|
||||||
|
import { BasePromptTemplate, defaultContextSystemPrompt } from "../../prompts";
|
||||||
|
import type { NodeWithScore } from "../../schema";
|
||||||
|
import { MetadataMode, TextNode } from "../../schema";
|
||||||
|
import { extractText } from "../../utils/llms";
|
||||||
|
import type {
|
||||||
|
BaseVectorStore,
|
||||||
|
MetadataFilter,
|
||||||
|
VectorStoreQuery,
|
||||||
|
} from "../../vector-store";
|
||||||
|
import { VectorStoreQueryMode } from "../../vector-store";
|
||||||
|
import type { MemoryMessage } from "../types";
|
||||||
|
import { BaseMemoryBlock, type MemoryBlockOptions } from "./base";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The options for the vector memory block.
|
||||||
|
*/
|
||||||
|
export type VectorMemoryBlockOptions = {
|
||||||
|
/**
|
||||||
|
* The vector store to use for retrieval.
|
||||||
|
*/
|
||||||
|
vectorStore: BaseVectorStore;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum number of messages to include for context when retrieving.
|
||||||
|
* @default 5
|
||||||
|
*/
|
||||||
|
retrievalContextWindow?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template for formatting the retrieved information.
|
||||||
|
* @default new PromptTemplate({ template: "{{ text }}" })
|
||||||
|
*/
|
||||||
|
formatTemplate?: BasePromptTemplate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of node postprocessors to apply to the retrieved nodes containing messages.
|
||||||
|
*
|
||||||
|
* @default []
|
||||||
|
*/
|
||||||
|
nodePostprocessors?: BaseNodePostprocessor[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration options for vector store queries when retrieving memory.
|
||||||
|
*
|
||||||
|
* @default
|
||||||
|
* ```typescript
|
||||||
|
* {
|
||||||
|
* similarityTopK: 2, // Number of top similar results to return
|
||||||
|
* mode: VectorStoreQueryMode.DEFAULT, // Query mode for the vector store
|
||||||
|
* sessionFilterKey: "session_id", // Metadata key for session filtering
|
||||||
|
* filters: {
|
||||||
|
* filters: [
|
||||||
|
* { key: "session_id", value: "<current block id>", operator: "==" }
|
||||||
|
* ],
|
||||||
|
* condition: "and"
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Note: A session filter is automatically added to ensure memory isolation between blocks.
|
||||||
|
* If custom filters are provided, the session filter will be merged with them.
|
||||||
|
*/
|
||||||
|
queryOptions?: Partial<VectorMemoryBlockQueryOptions>;
|
||||||
|
} & MemoryBlockOptions;
|
||||||
|
|
||||||
|
export type VectorMemoryBlockQueryOptions = Omit<
|
||||||
|
VectorStoreQuery,
|
||||||
|
"queryEmbedding" | "queryStr"
|
||||||
|
> & {
|
||||||
|
sessionFilterKey: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A memory block that retrieves relevant information from a vector store.
|
||||||
|
*
|
||||||
|
* This block stores conversation history in a vector store and retrieves
|
||||||
|
* relevant information based on the most recent messages.
|
||||||
|
*/
|
||||||
|
export class VectorMemoryBlock<
|
||||||
|
TAdditionalMessageOptions extends object = object,
|
||||||
|
> extends BaseMemoryBlock<TAdditionalMessageOptions> {
|
||||||
|
private readonly vectorStore: BaseVectorStore;
|
||||||
|
private readonly retrievalContextWindow: number;
|
||||||
|
private readonly formatTemplate: BasePromptTemplate;
|
||||||
|
private readonly nodePostprocessors: BaseNodePostprocessor[];
|
||||||
|
private readonly queryOptions: VectorMemoryBlockQueryOptions;
|
||||||
|
|
||||||
|
constructor(options: VectorMemoryBlockOptions) {
|
||||||
|
super(options);
|
||||||
|
|
||||||
|
// Validate vector store
|
||||||
|
if (!options.vectorStore.storesText) {
|
||||||
|
throw new Error(
|
||||||
|
"vectorStore must store text to be used as a retrieval memory block",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.vectorStore = options.vectorStore;
|
||||||
|
this.retrievalContextWindow = options.retrievalContextWindow ?? 5;
|
||||||
|
this.queryOptions = this.buildDefaultQueryOptions(options.queryOptions);
|
||||||
|
this.formatTemplate = options.formatTemplate ?? defaultContextSystemPrompt;
|
||||||
|
this.nodePostprocessors = options.nodePostprocessors ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
get embedModel(): BaseEmbedding {
|
||||||
|
return this.vectorStore.embedModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
async get(
|
||||||
|
messages: MemoryMessage<TAdditionalMessageOptions>[] = [],
|
||||||
|
): Promise<MemoryMessage<TAdditionalMessageOptions>[]> {
|
||||||
|
if (messages?.length === 0) return [];
|
||||||
|
|
||||||
|
// Use the last message or a context window of messages for the query
|
||||||
|
let context: MemoryMessage<TAdditionalMessageOptions>[];
|
||||||
|
if (
|
||||||
|
this.retrievalContextWindow > 1 &&
|
||||||
|
messages.length >= this.retrievalContextWindow
|
||||||
|
) {
|
||||||
|
context = messages.slice(-this.retrievalContextWindow);
|
||||||
|
} else {
|
||||||
|
context = messages;
|
||||||
|
}
|
||||||
|
const queryText = context
|
||||||
|
.map((message) => extractText(message.content))
|
||||||
|
.join("\n\n");
|
||||||
|
if (!queryText) return [];
|
||||||
|
|
||||||
|
// Create and execute the query
|
||||||
|
const queryEmbedding = await this.embedModel.getTextEmbedding(queryText);
|
||||||
|
const query: VectorStoreQuery = {
|
||||||
|
queryStr: queryText,
|
||||||
|
queryEmbedding,
|
||||||
|
...this.queryOptions,
|
||||||
|
};
|
||||||
|
const results = await this.vectorStore.query(query);
|
||||||
|
if (!results.nodes?.length) return [];
|
||||||
|
|
||||||
|
// Create nodes with scores
|
||||||
|
const nodesWithScores: NodeWithScore[] = results.nodes.map(
|
||||||
|
(node, index) => ({
|
||||||
|
node,
|
||||||
|
score: results.similarities?.[index] ?? undefined,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Apply postprocessors
|
||||||
|
let processedNodes = nodesWithScores;
|
||||||
|
for (const postprocessor of this.nodePostprocessors) {
|
||||||
|
processedNodes = await postprocessor.postprocessNodes(
|
||||||
|
processedNodes,
|
||||||
|
queryText,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format the results
|
||||||
|
const retrievedText = processedNodes
|
||||||
|
.map(({ node }) => node.getContent(MetadataMode.NONE))
|
||||||
|
.join("\n\n");
|
||||||
|
|
||||||
|
const formattedText = this.formatTemplate.format({
|
||||||
|
context: retrievedText,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Return as memory message
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
id: this.id,
|
||||||
|
role: "memory",
|
||||||
|
content: formattedText,
|
||||||
|
} as MemoryMessage<TAdditionalMessageOptions>,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
async put(
|
||||||
|
messages: MemoryMessage<TAdditionalMessageOptions>[],
|
||||||
|
): Promise<void> {
|
||||||
|
if (messages.length === 0) return;
|
||||||
|
|
||||||
|
// Format messages with role, text content, and additional info
|
||||||
|
const texts: string[] = [];
|
||||||
|
|
||||||
|
for (const message of messages) {
|
||||||
|
const text = extractText(message.content);
|
||||||
|
if (!text) continue;
|
||||||
|
|
||||||
|
let messageText = text;
|
||||||
|
|
||||||
|
// Add additional info if present
|
||||||
|
const additionalInfo = (message.options ?? {}) as Record<string, unknown>;
|
||||||
|
if (Object.keys(additionalInfo).length > 0) {
|
||||||
|
messageText += `\nAdditional Info: (${JSON.stringify(additionalInfo)})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
texts.push(`<message role='${message.role}'>${messageText}</message>`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (texts.length === 0) return;
|
||||||
|
|
||||||
|
// Create text node with session metadata
|
||||||
|
const textNode = new TextNode({
|
||||||
|
text: texts.join("\n"),
|
||||||
|
metadata: { [this.queryOptions.sessionFilterKey]: this.id },
|
||||||
|
});
|
||||||
|
|
||||||
|
// Get embedding for the text
|
||||||
|
textNode.embedding = await this.embedModel.getTextEmbedding(textNode.text);
|
||||||
|
|
||||||
|
// Add to vector store
|
||||||
|
await this.vectorStore.add([textNode]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private buildDefaultQueryOptions(
|
||||||
|
options: Partial<VectorMemoryBlockQueryOptions> | undefined,
|
||||||
|
): VectorMemoryBlockQueryOptions {
|
||||||
|
const {
|
||||||
|
similarityTopK = 2,
|
||||||
|
mode = VectorStoreQueryMode.DEFAULT,
|
||||||
|
sessionFilterKey = "session_id",
|
||||||
|
} = options ?? {};
|
||||||
|
|
||||||
|
let filters = options?.filters;
|
||||||
|
|
||||||
|
const sessionFilter: MetadataFilter = {
|
||||||
|
key: sessionFilterKey,
|
||||||
|
value: this.id,
|
||||||
|
operator: "==",
|
||||||
|
};
|
||||||
|
|
||||||
|
if (filters) {
|
||||||
|
// Only add session_id filter if it doesn't exist in the filters list
|
||||||
|
const sessionIdFilterExists = filters.filters.some(
|
||||||
|
(filter) => filter.key === sessionFilterKey,
|
||||||
|
);
|
||||||
|
if (!sessionIdFilterExists) {
|
||||||
|
filters.filters.push(sessionFilter);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// If no filters are provided, add the session_id filter
|
||||||
|
filters = {
|
||||||
|
filters: [sessionFilter],
|
||||||
|
condition: "and",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return { ...options, similarityTopK, mode, sessionFilterKey, filters };
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,10 @@ import {
|
|||||||
StaticMemoryBlock,
|
StaticMemoryBlock,
|
||||||
type StaticMemoryBlockOptions,
|
type StaticMemoryBlockOptions,
|
||||||
} from "./block/static";
|
} from "./block/static";
|
||||||
|
import {
|
||||||
|
VectorMemoryBlock,
|
||||||
|
type VectorMemoryBlockOptions,
|
||||||
|
} from "./block/vector";
|
||||||
import { DEFAULT_TOKEN_LIMIT, Memory, type MemoryOptions } from "./memory";
|
import { DEFAULT_TOKEN_LIMIT, Memory, type MemoryOptions } from "./memory";
|
||||||
import type { MemoryMessage } from "./types";
|
import type { MemoryMessage } from "./types";
|
||||||
|
|
||||||
@@ -115,6 +119,17 @@ export function factExtractionBlock<TMessageOptions extends object = object>(
|
|||||||
return new FactExtractionMemoryBlock<TMessageOptions>(options);
|
return new FactExtractionMemoryBlock<TMessageOptions>(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create a VectorMemoryBlock
|
||||||
|
* @param options - Configuration options for the vector memory block
|
||||||
|
* @returns A new VectorMemoryBlock instance
|
||||||
|
*/
|
||||||
|
export function vectorBlock<TMessageOptions extends object = object>(
|
||||||
|
options: VectorMemoryBlockOptions,
|
||||||
|
): VectorMemoryBlock<TMessageOptions> {
|
||||||
|
return new VectorMemoryBlock<TMessageOptions>(options);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Memory instance from a snapshot
|
* Creates a new Memory instance from a snapshot
|
||||||
* @param snapshot The snapshot to load from
|
* @param snapshot The snapshot to load from
|
||||||
|
|||||||
@@ -31,6 +31,13 @@ export type MemoryOptions<TMessageOptions extends object = object> = {
|
|||||||
* Used internally for memory restoration from snapshots.
|
* Used internally for memory restoration from snapshots.
|
||||||
*/
|
*/
|
||||||
memoryCursor?: number;
|
memoryCursor?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default LLM to use for memory retrieval.
|
||||||
|
* If not provided, the default `Settings.llm` will be used.
|
||||||
|
* This default LLM can be overridden by the LLM passed in the `getLLM` method.
|
||||||
|
*/
|
||||||
|
llm?: LLM | undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
export class Memory<
|
export class Memory<
|
||||||
@@ -65,6 +72,10 @@ export class Memory<
|
|||||||
* The cursor for the messages that have been processed into long-term memory.
|
* The cursor for the messages that have been processed into long-term memory.
|
||||||
*/
|
*/
|
||||||
private memoryCursor: number = 0;
|
private memoryCursor: number = 0;
|
||||||
|
/**
|
||||||
|
* The default LLM to use for memory retrieval.
|
||||||
|
*/
|
||||||
|
private llm: LLM | undefined;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
messages: MemoryMessage<TMessageOptions>[] = [],
|
messages: MemoryMessage<TMessageOptions>[] = [],
|
||||||
@@ -76,6 +87,7 @@ export class Memory<
|
|||||||
options.shortTermTokenLimitRatio ?? DEFAULT_SHORT_TERM_TOKEN_LIMIT_RATIO;
|
options.shortTermTokenLimitRatio ?? DEFAULT_SHORT_TERM_TOKEN_LIMIT_RATIO;
|
||||||
this.memoryBlocks = options.memoryBlocks ?? [];
|
this.memoryBlocks = options.memoryBlocks ?? [];
|
||||||
this.memoryCursor = options.memoryCursor ?? 0;
|
this.memoryCursor = options.memoryCursor ?? 0;
|
||||||
|
this.initLLM(options.llm);
|
||||||
|
|
||||||
this.adapters = {
|
this.adapters = {
|
||||||
...options.customAdapters,
|
...options.customAdapters,
|
||||||
@@ -84,6 +96,15 @@ export class Memory<
|
|||||||
} as TAdapters & BuiltinAdapters<TMessageOptions>;
|
} as TAdapters & BuiltinAdapters<TMessageOptions>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private initLLM(llm: LLM | undefined) {
|
||||||
|
// safe initialize LLM without throwing error if Settings.llm hasn't been set yet
|
||||||
|
try {
|
||||||
|
this.llm = llm ?? Settings.llm;
|
||||||
|
} catch (error) {
|
||||||
|
this.llm = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a message to the memory
|
* Add a message to the memory
|
||||||
* @param message - The message to add to the memory
|
* @param message - The message to add to the memory
|
||||||
@@ -160,12 +181,13 @@ export class Memory<
|
|||||||
/**
|
/**
|
||||||
* Get the messages from the memory, optionally including transient messages.
|
* Get the messages from the memory, optionally including transient messages.
|
||||||
* only return messages that are within context window of the LLM
|
* only return messages that are within context window of the LLM
|
||||||
* @param llm - To fit the result messages to the context window of the LLM. If not provided, the default token limit will be used.
|
* @param llm - To fit the result messages to the context window of the LLM (fallback to default llm if not provided).
|
||||||
|
* If llm is not specified in both the constructor and the method, the default token limit will be used.
|
||||||
* @param transientMessages - Optional transient messages to include.
|
* @param transientMessages - Optional transient messages to include.
|
||||||
* @returns The messages from the memory, optionally including transient messages.
|
* @returns The messages from the memory, optionally including transient messages.
|
||||||
*/
|
*/
|
||||||
async getLLM(
|
async getLLM(
|
||||||
llm?: LLM,
|
llm: LLM | undefined = this.llm,
|
||||||
transientMessages?: ChatMessage<TMessageOptions>[],
|
transientMessages?: ChatMessage<TMessageOptions>[],
|
||||||
): Promise<ChatMessage[]> {
|
): Promise<ChatMessage[]> {
|
||||||
// Priority of result messages:
|
// Priority of result messages:
|
||||||
@@ -176,11 +198,20 @@ export class Memory<
|
|||||||
? Math.ceil(contextWindow * DEFAULT_TOKEN_LIMIT_RATIO)
|
? Math.ceil(contextWindow * DEFAULT_TOKEN_LIMIT_RATIO)
|
||||||
: this.tokenLimit;
|
: this.tokenLimit;
|
||||||
|
|
||||||
|
let blockInputMessages = this.messages;
|
||||||
|
if (transientMessages && transientMessages.length > 0) {
|
||||||
|
blockInputMessages = [
|
||||||
|
...this.messages,
|
||||||
|
...transientMessages.map((m) => this.adapters.llamaindex.toMemory(m)),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
// Start with fixed block messages (priority=0)
|
// Start with fixed block messages (priority=0)
|
||||||
// as it must always be included in the retrieval result
|
// as it must always be included in the retrieval result
|
||||||
const messages = await this.getMemoryBlockMessages(
|
const messages = await this.getMemoryBlockMessages(
|
||||||
this.memoryBlocks.filter((block) => block.priority === 0),
|
this.memoryBlocks.filter((block) => block.priority === 0),
|
||||||
tokenLimit,
|
tokenLimit,
|
||||||
|
blockInputMessages,
|
||||||
);
|
);
|
||||||
// remaining token limit for short-term and memory blocks content
|
// remaining token limit for short-term and memory blocks content
|
||||||
const remainingTokenLimit =
|
const remainingTokenLimit =
|
||||||
@@ -207,6 +238,7 @@ export class Memory<
|
|||||||
const longTermBlockMessages = await this.getMemoryBlockMessages(
|
const longTermBlockMessages = await this.getMemoryBlockMessages(
|
||||||
longTermBlocks,
|
longTermBlocks,
|
||||||
memoryBlocksTokenLimit,
|
memoryBlocksTokenLimit,
|
||||||
|
blockInputMessages,
|
||||||
);
|
);
|
||||||
messages.push(...longTermBlockMessages);
|
messages.push(...longTermBlockMessages);
|
||||||
|
|
||||||
@@ -252,6 +284,7 @@ export class Memory<
|
|||||||
private async getMemoryBlockMessages(
|
private async getMemoryBlockMessages(
|
||||||
blocks: BaseMemoryBlock<TMessageOptions>[],
|
blocks: BaseMemoryBlock<TMessageOptions>[],
|
||||||
tokenLimit?: number,
|
tokenLimit?: number,
|
||||||
|
messages?: MemoryMessage<TMessageOptions>[],
|
||||||
): Promise<ChatMessage<TMessageOptions>[]> {
|
): Promise<ChatMessage<TMessageOptions>[]> {
|
||||||
if (blocks.length === 0) {
|
if (blocks.length === 0) {
|
||||||
return [];
|
return [];
|
||||||
@@ -265,7 +298,7 @@ export class Memory<
|
|||||||
let addedTokenCount = 0;
|
let addedTokenCount = 0;
|
||||||
for (const block of sortedBlocks) {
|
for (const block of sortedBlocks) {
|
||||||
try {
|
try {
|
||||||
const content = await block.get();
|
const content = await block.get(messages);
|
||||||
for (const message of content) {
|
for (const message of content) {
|
||||||
const chatMessage = this.adapters.llamaindex.fromMemory(message);
|
const chatMessage = this.adapters.llamaindex.fromMemory(message);
|
||||||
const messageTokenCount = this.countMessagesToken([chatMessage]);
|
const messageTokenCount = this.countMessagesToken([chatMessage]);
|
||||||
|
|||||||
@@ -101,7 +101,9 @@ export type VectorStoreByType = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type VectorStoreBaseParams = {
|
export type VectorStoreBaseParams = {
|
||||||
|
// @deprecated: use embedModel instead
|
||||||
embeddingModel?: BaseEmbedding | undefined;
|
embeddingModel?: BaseEmbedding | undefined;
|
||||||
|
embedModel?: BaseEmbedding | undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
export abstract class BaseVectorStore<Client = unknown, T = unknown> {
|
export abstract class BaseVectorStore<Client = unknown, T = unknown> {
|
||||||
@@ -117,7 +119,8 @@ export abstract class BaseVectorStore<Client = unknown, T = unknown> {
|
|||||||
): Promise<VectorStoreQueryResult>;
|
): Promise<VectorStoreQueryResult>;
|
||||||
|
|
||||||
protected constructor(params?: VectorStoreBaseParams) {
|
protected constructor(params?: VectorStoreBaseParams) {
|
||||||
this.embedModel = params?.embeddingModel ?? Settings.embedModel;
|
this.embedModel =
|
||||||
|
params?.embedModel ?? params?.embeddingModel ?? Settings.embedModel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/experimental
|
# @llamaindex/experimental
|
||||||
|
|
||||||
|
## 0.0.198
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- llamaindex@0.11.21
|
||||||
|
|
||||||
## 0.0.197
|
## 0.0.197
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/experimental",
|
"name": "@llamaindex/experimental",
|
||||||
"description": "Experimental package for LlamaIndexTS",
|
"description": "Experimental package for LlamaIndexTS",
|
||||||
"version": "0.0.197",
|
"version": "0.0.198",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "dist/type/index.d.ts",
|
"types": "dist/type/index.d.ts",
|
||||||
"main": "dist/cjs/index.js",
|
"main": "dist/cjs/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
# llamaindex
|
# llamaindex
|
||||||
|
|
||||||
|
## 0.11.21
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
- @llamaindex/cloud@4.0.26
|
||||||
|
- @llamaindex/node-parser@2.0.17
|
||||||
|
- @llamaindex/workflow@1.1.17
|
||||||
|
|
||||||
## 0.11.20
|
## 0.11.20
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "llamaindex",
|
"name": "llamaindex",
|
||||||
"version": "0.11.20",
|
"version": "0.11.21",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ export class SimpleVectorStore extends BaseVectorStore {
|
|||||||
|
|
||||||
static async fromPersistPath(
|
static async fromPersistPath(
|
||||||
persistPath: string,
|
persistPath: string,
|
||||||
embeddingModel?: BaseEmbedding,
|
embedModel?: BaseEmbedding,
|
||||||
): Promise<SimpleVectorStore> {
|
): Promise<SimpleVectorStore> {
|
||||||
const dirPath = path.dirname(persistPath);
|
const dirPath = path.dirname(persistPath);
|
||||||
if (!(await exists(dirPath))) {
|
if (!(await exists(dirPath))) {
|
||||||
@@ -300,20 +300,20 @@ export class SimpleVectorStore extends BaseVectorStore {
|
|||||||
data.textIdToRefDocId = dataDict.textIdToRefDocId ?? {};
|
data.textIdToRefDocId = dataDict.textIdToRefDocId ?? {};
|
||||||
// @ts-expect-error TS2322
|
// @ts-expect-error TS2322
|
||||||
data.metadataDict = dataDict.metadataDict ?? {};
|
data.metadataDict = dataDict.metadataDict ?? {};
|
||||||
const store = new SimpleVectorStore({ data, embeddingModel });
|
const store = new SimpleVectorStore({ data, embedModel });
|
||||||
store.persistPath = persistPath;
|
store.persistPath = persistPath;
|
||||||
return store;
|
return store;
|
||||||
}
|
}
|
||||||
|
|
||||||
static fromDict(
|
static fromDict(
|
||||||
saveDict: SimpleVectorStoreData,
|
saveDict: SimpleVectorStoreData,
|
||||||
embeddingModel?: BaseEmbedding,
|
embedModel?: BaseEmbedding,
|
||||||
): SimpleVectorStore {
|
): SimpleVectorStore {
|
||||||
const data = new SimpleVectorStoreData();
|
const data = new SimpleVectorStoreData();
|
||||||
data.embeddingDict = saveDict.embeddingDict;
|
data.embeddingDict = saveDict.embeddingDict;
|
||||||
data.textIdToRefDocId = saveDict.textIdToRefDocId;
|
data.textIdToRefDocId = saveDict.textIdToRefDocId;
|
||||||
data.metadataDict = saveDict.metadataDict;
|
data.metadataDict = saveDict.metadataDict;
|
||||||
return new SimpleVectorStore({ data, embeddingModel });
|
return new SimpleVectorStore({ data, embedModel });
|
||||||
}
|
}
|
||||||
|
|
||||||
toDict(): SimpleVectorStoreData {
|
toDict(): SimpleVectorStoreData {
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/core-test
|
# @llamaindex/core-test
|
||||||
|
|
||||||
|
## 0.1.13
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.1.12
|
## 0.1.12
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/llamaindex-test",
|
"name": "@llamaindex/llamaindex-test",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.1.12",
|
"version": "0.1.13",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "vitest run"
|
"test": "vitest run"
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ describe("SimpleVectorStore", () => {
|
|||||||
}),
|
}),
|
||||||
];
|
];
|
||||||
store = new SimpleVectorStore({
|
store = new SimpleVectorStore({
|
||||||
embeddingModel: {} as BaseEmbedding, // Mocking the embedModel
|
embedModel: {} as BaseEmbedding, // Mocking the embedModel
|
||||||
data: {
|
data: {
|
||||||
embeddingDict: {},
|
embeddingDict: {},
|
||||||
textIdToRefDocId: {},
|
textIdToRefDocId: {},
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/node-parser
|
# @llamaindex/node-parser
|
||||||
|
|
||||||
|
## 2.0.17
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 2.0.16
|
## 2.0.16
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/node-parser",
|
"name": "@llamaindex/node-parser",
|
||||||
"version": "2.0.16",
|
"version": "2.0.17",
|
||||||
"description": "Node parser for LlamaIndex",
|
"description": "Node parser for LlamaIndex",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/anthropic
|
# @llamaindex/anthropic
|
||||||
|
|
||||||
|
## 0.3.19
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.3.18
|
## 0.3.18
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/anthropic",
|
"name": "@llamaindex/anthropic",
|
||||||
"description": "Anthropic Adapter for LlamaIndex",
|
"description": "Anthropic Adapter for LlamaIndex",
|
||||||
"version": "0.3.18",
|
"version": "0.3.19",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/assemblyai
|
# @llamaindex/assemblyai
|
||||||
|
|
||||||
|
## 0.1.16
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.1.15
|
## 0.1.15
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/assemblyai",
|
"name": "@llamaindex/assemblyai",
|
||||||
"description": "AssemblyAI Reader for LlamaIndex",
|
"description": "AssemblyAI Reader for LlamaIndex",
|
||||||
"version": "0.1.15",
|
"version": "0.1.16",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
"main": "dist/index.cjs",
|
"main": "dist/index.cjs",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/community
|
# @llamaindex/community
|
||||||
|
|
||||||
|
## 0.0.112
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.0.111
|
## 0.0.111
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/aws",
|
"name": "@llamaindex/aws",
|
||||||
"description": "AWS package for LlamaIndexTS",
|
"description": "AWS package for LlamaIndexTS",
|
||||||
"version": "0.0.111",
|
"version": "0.0.112",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "dist/type/index.d.ts",
|
"types": "dist/type/index.d.ts",
|
||||||
"main": "dist/cjs/index.js",
|
"main": "dist/cjs/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# @llamaindex/clip
|
# @llamaindex/clip
|
||||||
|
|
||||||
|
## 0.0.68
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.0.67
|
## 0.0.67
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/clip",
|
"name": "@llamaindex/clip",
|
||||||
"description": "Clip Embedding Adapter for LlamaIndex",
|
"description": "Clip Embedding Adapter for LlamaIndex",
|
||||||
"version": "0.0.67",
|
"version": "0.0.68",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
"main": "dist/index.cjs",
|
"main": "dist/index.cjs",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/cohere
|
# @llamaindex/cohere
|
||||||
|
|
||||||
|
## 0.0.31
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.0.30
|
## 0.0.30
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/cohere",
|
"name": "@llamaindex/cohere",
|
||||||
"description": "Cohere Adapter for LlamaIndex",
|
"description": "Cohere Adapter for LlamaIndex",
|
||||||
"version": "0.0.30",
|
"version": "0.0.31",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# @llamaindex/deepinfra
|
# @llamaindex/deepinfra
|
||||||
|
|
||||||
|
## 0.0.68
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.0.67
|
## 0.0.67
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/deepinfra",
|
"name": "@llamaindex/deepinfra",
|
||||||
"description": "Deepinfra Adapter for LlamaIndex",
|
"description": "Deepinfra Adapter for LlamaIndex",
|
||||||
"version": "0.0.67",
|
"version": "0.0.68",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/deepseek
|
# @llamaindex/deepseek
|
||||||
|
|
||||||
|
## 0.0.29
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.0.28
|
## 0.0.28
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/deepseek",
|
"name": "@llamaindex/deepseek",
|
||||||
"description": "DeepSeek Adapter for LlamaIndex",
|
"description": "DeepSeek Adapter for LlamaIndex",
|
||||||
"version": "0.0.28",
|
"version": "0.0.29",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/discord
|
# @llamaindex/discord
|
||||||
|
|
||||||
|
## 0.1.16
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.1.15
|
## 0.1.15
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/discord",
|
"name": "@llamaindex/discord",
|
||||||
"description": "Discord Reader for LlamaIndex",
|
"description": "Discord Reader for LlamaIndex",
|
||||||
"version": "0.1.15",
|
"version": "0.1.16",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
"main": "dist/index.cjs",
|
"main": "dist/index.cjs",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/excel
|
# @llamaindex/excel
|
||||||
|
|
||||||
|
## 0.1.17
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.1.16
|
## 0.1.16
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/excel",
|
"name": "@llamaindex/excel",
|
||||||
"description": "Excel Reader for LlamaIndex",
|
"description": "Excel Reader for LlamaIndex",
|
||||||
"version": "0.1.16",
|
"version": "0.1.17",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
"main": "dist/index.cjs",
|
"main": "dist/index.cjs",
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/fireworks
|
# @llamaindex/fireworks
|
||||||
|
|
||||||
|
## 0.0.28
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.0.27
|
## 0.0.27
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/fireworks",
|
"name": "@llamaindex/fireworks",
|
||||||
"description": "Fireworks Adapter for LlamaIndex",
|
"description": "Fireworks Adapter for LlamaIndex",
|
||||||
"version": "0.0.27",
|
"version": "0.0.28",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/google
|
# @llamaindex/google
|
||||||
|
|
||||||
|
## 0.3.16
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.3.15
|
## 0.3.15
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/google",
|
"name": "@llamaindex/google",
|
||||||
"description": "Google Adapter for LlamaIndex",
|
"description": "Google Adapter for LlamaIndex",
|
||||||
"version": "0.3.15",
|
"version": "0.3.16",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# @llamaindex/groq
|
# @llamaindex/groq
|
||||||
|
|
||||||
|
## 0.0.84
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.0.83
|
## 0.0.83
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/groq",
|
"name": "@llamaindex/groq",
|
||||||
"description": "Groq Adapter for LlamaIndex",
|
"description": "Groq Adapter for LlamaIndex",
|
||||||
"version": "0.0.83",
|
"version": "0.0.84",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# @llamaindex/huggingface
|
# @llamaindex/huggingface
|
||||||
|
|
||||||
|
## 0.1.22
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.1.21
|
## 0.1.21
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/huggingface",
|
"name": "@llamaindex/huggingface",
|
||||||
"description": "Huggingface Adapter for LlamaIndex",
|
"description": "Huggingface Adapter for LlamaIndex",
|
||||||
"version": "0.1.21",
|
"version": "0.1.22",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
"main": "dist/index.cjs",
|
"main": "dist/index.cjs",
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# @llamaindex/jinaai
|
# @llamaindex/jinaai
|
||||||
|
|
||||||
|
## 0.0.28
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.0.27
|
## 0.0.27
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/jinaai",
|
"name": "@llamaindex/jinaai",
|
||||||
"description": "JinaAI Adapter for LlamaIndex",
|
"description": "JinaAI Adapter for LlamaIndex",
|
||||||
"version": "0.0.27",
|
"version": "0.0.28",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/mistral
|
# @llamaindex/mistral
|
||||||
|
|
||||||
|
## 0.1.17
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.1.16
|
## 0.1.16
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/mistral",
|
"name": "@llamaindex/mistral",
|
||||||
"description": "Mistral Adapter for LlamaIndex",
|
"description": "Mistral Adapter for LlamaIndex",
|
||||||
"version": "0.1.16",
|
"version": "0.1.17",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/mixedbread
|
# @llamaindex/mixedbread
|
||||||
|
|
||||||
|
## 0.0.31
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.0.30
|
## 0.0.30
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/mixedbread",
|
"name": "@llamaindex/mixedbread",
|
||||||
"description": "Mixedbread Adapter for LlamaIndex",
|
"description": "Mixedbread Adapter for LlamaIndex",
|
||||||
"version": "0.0.30",
|
"version": "0.0.31",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/notion
|
# @llamaindex/notion
|
||||||
|
|
||||||
|
## 0.1.16
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.1.15
|
## 0.1.15
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/notion",
|
"name": "@llamaindex/notion",
|
||||||
"description": "Notion Reader for LlamaIndex",
|
"description": "Notion Reader for LlamaIndex",
|
||||||
"version": "0.1.15",
|
"version": "0.1.16",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
"main": "dist/index.cjs",
|
"main": "dist/index.cjs",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/ollama
|
# @llamaindex/ollama
|
||||||
|
|
||||||
|
## 0.1.17
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.1.16
|
## 0.1.16
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/ollama",
|
"name": "@llamaindex/ollama",
|
||||||
"description": "Ollama Adapter for LlamaIndex",
|
"description": "Ollama Adapter for LlamaIndex",
|
||||||
"version": "0.1.16",
|
"version": "0.1.17",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/openai
|
# @llamaindex/openai
|
||||||
|
|
||||||
|
## 0.4.12
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.4.11
|
## 0.4.11
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/openai",
|
"name": "@llamaindex/openai",
|
||||||
"description": "OpenAI Adapter for LlamaIndex",
|
"description": "OpenAI Adapter for LlamaIndex",
|
||||||
"version": "0.4.11",
|
"version": "0.4.12",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
import { ChatMessage, ToolCallLLMMessageOptions } from "@llamaindex/core/llms";
|
import {
|
||||||
import { describe, expect, it } from "vitest";
|
ChatMessage,
|
||||||
|
ChatResponseChunk,
|
||||||
|
ToolCallLLMMessageOptions,
|
||||||
|
} from "@llamaindex/core/llms";
|
||||||
|
import { describe, expect, it, vi } from "vitest";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { OpenAI } from "../src/llm";
|
import { OpenAI } from "../src/llm";
|
||||||
|
|
||||||
@@ -231,3 +235,52 @@ describe("OpenAI Static Methods", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("OpenAI streamChat", () => {
|
||||||
|
it("should handle choice with empty delta and finish_reason stop", async () => {
|
||||||
|
// Create a mock OpenAI instance
|
||||||
|
const mockStream = async function* () {
|
||||||
|
yield {
|
||||||
|
choices: [
|
||||||
|
{
|
||||||
|
delta: {},
|
||||||
|
finish_reason: "stop",
|
||||||
|
index: 0,
|
||||||
|
logprobs: null,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Mock the OpenAI session and chat completions
|
||||||
|
const mockSession = {
|
||||||
|
chat: {
|
||||||
|
completions: {
|
||||||
|
create: vi.fn().mockResolvedValue(mockStream()),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const openai = new OpenAI({
|
||||||
|
model: "gpt-4o-mini",
|
||||||
|
apiKey: "test-key",
|
||||||
|
// @ts-expect-error: mockSession is a mock object for testing purposes
|
||||||
|
session: mockSession,
|
||||||
|
});
|
||||||
|
|
||||||
|
// @ts-expect-error accessing protected method
|
||||||
|
const stream = openai.streamChat({
|
||||||
|
messages: [{ role: "user" as const, content: "Hello" }],
|
||||||
|
stream: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const chunks: ChatResponseChunk[] = [];
|
||||||
|
for await (const chunk of stream) {
|
||||||
|
chunks.push(chunk);
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(chunks).toHaveLength(1);
|
||||||
|
expect(chunks[0].options).toEqual({});
|
||||||
|
expect(chunks[0].delta).toBe("");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# @llamaindex/perplexity
|
# @llamaindex/perplexity
|
||||||
|
|
||||||
|
## 0.0.25
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.0.24
|
## 0.0.24
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/perplexity",
|
"name": "@llamaindex/perplexity",
|
||||||
"description": "Perplexity Adapter for LlamaIndex",
|
"description": "Perplexity Adapter for LlamaIndex",
|
||||||
"version": "0.0.24",
|
"version": "0.0.25",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/portkey-ai
|
# @llamaindex/portkey-ai
|
||||||
|
|
||||||
|
## 0.0.59
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.0.58
|
## 0.0.58
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/portkey-ai",
|
"name": "@llamaindex/portkey-ai",
|
||||||
"description": "Portkey Adapter for LlamaIndex",
|
"description": "Portkey Adapter for LlamaIndex",
|
||||||
"version": "0.0.58",
|
"version": "0.0.59",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/replicate
|
# @llamaindex/replicate
|
||||||
|
|
||||||
|
## 0.0.59
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.0.58
|
## 0.0.58
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/replicate",
|
"name": "@llamaindex/replicate",
|
||||||
"description": "Replicate Adapter for LlamaIndex",
|
"description": "Replicate Adapter for LlamaIndex",
|
||||||
"version": "0.0.58",
|
"version": "0.0.59",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/bm25-retriever
|
# @llamaindex/bm25-retriever
|
||||||
|
|
||||||
|
## 0.0.6
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.0.5
|
## 0.0.5
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/bm25-retriever",
|
"name": "@llamaindex/bm25-retriever",
|
||||||
"description": "BM25 Retriever for LlamaIndex",
|
"description": "BM25 Retriever for LlamaIndex",
|
||||||
"version": "0.0.5",
|
"version": "0.0.6",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @llamaindex/astra
|
# @llamaindex/astra
|
||||||
|
|
||||||
|
## 0.0.31
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
|
||||||
## 0.0.30
|
## 0.0.30
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@llamaindex/astra",
|
"name": "@llamaindex/astra",
|
||||||
"description": "Astra Storage for LlamaIndex",
|
"description": "Astra Storage for LlamaIndex",
|
||||||
"version": "0.0.30",
|
"version": "0.0.31",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.js",
|
"module": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# @llamaindex/azure
|
# @llamaindex/azure
|
||||||
|
|
||||||
|
## 0.1.29
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [38da40b]
|
||||||
|
- @llamaindex/core@0.6.17
|
||||||
|
- @llamaindex/openai@0.4.12
|
||||||
|
|
||||||
## 0.1.28
|
## 0.1.28
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user