Compare commits

..

10 Commits

Author SHA1 Message Date
github-actions[bot] 805d2b0d55 Release 0.8.17 (#1504)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-11-18 10:28:15 -08:00
Marcus Schiesser 6d22fa2a50 feat: Get PromptTemplate template variables at run-time (#1502) 2024-11-18 09:34:26 -08:00
Aman Rao 16f0068175 chore: update azure cosmos db no sql vector store (#1503) 2024-11-18 09:33:20 -08:00
github-actions[bot] 1054c3382a Release 0.8.16 (#1499)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-11-17 22:28:02 -08:00
Alex Yang e60328b086 fix: import error in cjs (#1498) 2024-11-17 22:24:09 -08:00
Laurie Voss 3371dfb89f Syncing footer to match main site (#1496) 2024-11-16 00:43:44 -08:00
github-actions[bot] 2065a16a07 Release 0.8.15 (#1494)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-11-15 11:27:52 -08:00
Wassim Chegham 5dae534f8d fix: propagate queryStr to concrete vectorStore (#1495)
Co-authored-by: Alex Yang <himself65@outlook.com>
2024-11-15 11:16:32 -08:00
Aman Rao 3d503cb810 chore: update azure cosmos db (#1484)
Co-authored-by: Alex Yang <himself65@outlook.com>
2024-11-15 00:55:32 -08:00
Thuc Pham daf8522bec feat: use mock llm (#1492) 2024-11-15 14:50:49 +08:00
71 changed files with 703 additions and 196 deletions
+20
View File
@@ -1,5 +1,25 @@
# docs
## 0.0.122
### Patch Changes
- llamaindex@0.8.17
## 0.0.121
### Patch Changes
- llamaindex@0.8.16
## 0.0.120
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.0.119
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "docs",
"version": "0.0.119",
"version": "0.0.122",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
+28
View File
@@ -1,5 +1,33 @@
# @llamaindex/doc
## 0.0.20
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
- @llamaindex/cloud@2.0.11
- llamaindex@0.8.17
- @llamaindex/node-parser@0.0.12
- @llamaindex/openai@0.1.36
- @llamaindex/readers@1.0.13
## 0.0.19
### Patch Changes
- Updated dependencies [e60328b]
- @llamaindex/readers@1.0.12
- llamaindex@0.8.16
## 0.0.18
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.0.17
### Patch Changes
+2
View File
@@ -6,6 +6,7 @@ const withMDX = createMDX();
const config = {
reactStrictMode: true,
transpilePackages: ["monaco-editor"],
serverExternalPackages: ["@huggingface/transformers"],
webpack: (config, { isServer }) => {
if (Array.isArray(config.target) && config.target.includes("web")) {
config.target = ["web", "es2020"];
@@ -26,6 +27,7 @@ const config = {
}),
);
}
config.resolve.alias["replicate"] = false;
return config;
},
};
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/doc",
"version": "0.0.17",
"version": "0.0.20",
"private": true,
"scripts": {
"build": "pnpm run build:docs && next build",
+16 -16
View File
@@ -1,6 +1,9 @@
import { Message } from "ai";
import { simulateReadableStream } from "ai/test";
import { NextRequest, NextResponse } from "next/server";
import { llm } from "@/lib/utils";
import { LlamaIndexAdapter, type Message } from "ai";
import { Settings, SimpleChatEngine, type ChatMessage } from "llamaindex";
import { NextResponse, type NextRequest } from "next/server";
Settings.llm = llm;
export async function POST(request: NextRequest) {
try {
@@ -12,19 +15,16 @@ export async function POST(request: NextRequest) {
{ status: 400 },
);
}
const mockResponse = `Hello! This is a mock response to: ${userMessage.content}`;
return new Response(
simulateReadableStream({
chunkDelayInMs: 20,
values: mockResponse.split(" ").map((t) => `0:"${t} "\n`),
}).pipeThrough(new TextEncoderStream()),
{
status: 200,
headers: {
"X-Vercel-AI-Data-Stream": "v1",
"Content-Type": "text/plain; charset=utf-8",
},
},
const chatEngine = new SimpleChatEngine();
return LlamaIndexAdapter.toDataStreamResponse(
await chatEngine.chat({
message: userMessage.content,
chatHistory: messages as ChatMessage[],
stream: true,
}),
{},
);
} catch (error) {
const detail = (error as Error).message;
@@ -1,7 +1,8 @@
import { llm } from "@/lib/utils";
import { Markdown } from "@llamaindex/chat-ui/widgets";
import { generateId, Message, parseStreamPart } from "ai";
import { generateId, Message } from "ai";
import { createAI, createStreamableUI, getMutableAIState } from "ai/rsc";
import { simulateReadableStream } from "ai/test";
import { type ChatMessage, Settings, SimpleChatEngine } from "llamaindex";
import { ReactNode } from "react";
type ServerState = Message[];
@@ -10,6 +11,8 @@ type Actions = {
chat: (message: Message) => Promise<Message & { display: ReactNode }>;
};
Settings.llm = llm;
export const AI = createAI<ServerState, FrontendState, Actions>({
initialAIState: [],
initialUIState: [],
@@ -20,31 +23,30 @@ export const AI = createAI<ServerState, FrontendState, Actions>({
const aiState = getMutableAIState<typeof AI>();
aiState.update((prev) => [...prev, message]);
const mockResponse = `Hello! This is a mock response to: ${message.content}`;
const responseStream = simulateReadableStream({
chunkDelayInMs: 20,
values: mockResponse.split(" ").map((t) => `0:"${t} "\n`),
});
const uiStream = createStreamableUI();
const chatEngine = new SimpleChatEngine();
const assistantMessage: Message = {
id: generateId(),
role: "assistant",
content: "",
};
responseStream.pipeTo(
new WritableStream({
write: async (message) => {
assistantMessage.content += parseStreamPart(message).value;
uiStream.update(<Markdown content={assistantMessage.content} />);
},
close: () => {
aiState.done([...aiState.get(), assistantMessage]);
uiStream.done();
},
}),
);
// run the async function without blocking
(async () => {
const chatResponse = await chatEngine.chat({
stream: true,
message: message.content,
chatHistory: aiState.get() as ChatMessage[],
});
for await (const chunk of chatResponse) {
assistantMessage.content += chunk.delta;
uiStream.update(<Markdown content={assistantMessage.content} />);
}
aiState.done([...aiState.get(), assistantMessage]);
uiStream.done();
})();
return {
...assistantMessage,
+27 -5
View File
@@ -85,6 +85,33 @@ const Footer = () => {
<Text as="span">SharePoint</Text>
</a>
</li>
<li>
<a
href="https://llamaindex.ai/llamacloud-aws-s3-data-loading-for-generative-ai"
data-tracking-variant="link"
data-tracking-section="footer"
>
<Text as="span">AWS S3</Text>
</a>
</li>
<li>
<a
href="https://llamaindex.ai/llamacloud-azure-blob-storage-data-loading-for-generative-ai"
data-tracking-variant="link"
data-tracking-section="footer"
>
<Text as="span">Azure Blob Storage</Text>
</a>
</li>
<li>
<a
href="https://llamaindex.ai/llamacloud-google-drive-data-loading-for-generative-ai"
data-tracking-variant="link"
data-tracking-section="footer"
>
<Text as="span">Google Drive</Text>
</a>
</li>
</ul>
</div>
<div>
@@ -171,11 +198,6 @@ const Footer = () => {
<Text as="span">SEC Insights</Text>
</a>
</li>
<li>
<a href="https://chat.llamaindex.ai/">
<Text as="span">Chat LlamaIndex</Text>
</a>
</li>
<li>
<a href="https://github.com/run-llama/llamabot">
<Text as="span">LlamaBot</Text>
+30 -2
View File
@@ -1,6 +1,34 @@
import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"
import { clsx, type ClassValue } from "clsx";
import { LLM, LLMMetadata } from "llamaindex";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
}
class MockLLM {
metadata: LLMMetadata = {
model: "MockLLM",
temperature: 0.5,
topP: 0.5,
contextWindow: 1024,
tokenizer: undefined,
};
chat() {
const mockResponse = "Hello! This is a mock response";
return Promise.resolve(
new ReadableStream({
async start(controller) {
for (const char of mockResponse) {
controller.enqueue({ delta: char });
await new Promise((resolve) => setTimeout(resolve, 20));
}
controller.close();
},
}),
);
}
}
export const llm = new MockLLM() as unknown as LLM;
@@ -1,5 +1,25 @@
# @llamaindex/cloudflare-worker-agent-test
## 0.0.113
### Patch Changes
- llamaindex@0.8.17
## 0.0.112
### Patch Changes
- llamaindex@0.8.16
## 0.0.111
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.0.110
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/cloudflare-worker-agent-test",
"version": "0.0.110",
"version": "0.0.113",
"type": "module",
"private": true,
"scripts": {
@@ -1,5 +1,11 @@
# @llamaindex/llama-parse-browser-test
## 0.0.31
### Patch Changes
- @llamaindex/cloud@2.0.11
## 0.0.30
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/llama-parse-browser-test",
"private": true,
"version": "0.0.30",
"version": "0.0.31",
"type": "module",
"scripts": {
"dev": "vite",
+20
View File
@@ -1,5 +1,25 @@
# @llamaindex/next-agent-test
## 0.1.113
### Patch Changes
- llamaindex@0.8.17
## 0.1.112
### Patch Changes
- llamaindex@0.8.16
## 0.1.111
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.1.110
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-agent-test",
"version": "0.1.110",
"version": "0.1.113",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,25 @@
# test-edge-runtime
## 0.1.112
### Patch Changes
- llamaindex@0.8.17
## 0.1.111
### Patch Changes
- llamaindex@0.8.16
## 0.1.110
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.1.109
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/nextjs-edge-runtime-test",
"version": "0.1.109",
"version": "0.1.112",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,25 @@
# @llamaindex/next-node-runtime
## 0.0.94
### Patch Changes
- llamaindex@0.8.17
## 0.0.93
### Patch Changes
- llamaindex@0.8.16
## 0.0.92
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.0.91
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-node-runtime-test",
"version": "0.0.91",
"version": "0.0.94",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,25 @@
# @llamaindex/waku-query-engine-test
## 0.0.113
### Patch Changes
- llamaindex@0.8.17
## 0.0.112
### Patch Changes
- llamaindex@0.8.16
## 0.0.111
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.0.110
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/waku-query-engine-test",
"version": "0.0.110",
"version": "0.0.113",
"type": "module",
"private": true,
"scripts": {
-8
View File
@@ -83,14 +83,6 @@ async function query() {
});
}
// configure the Azure CosmosDB NoSQL Vector Store
const dbConfig: AzureCosmosDBNoSQLConfig = {
client: cosmosClient,
databaseName,
containerName,
flatMetadata: false,
};
// use Azure CosmosDB as a vectorStore, docStore, and indexStore
const { vectorStore, docStore, indexStore } = await initializeStores();
+20
View File
@@ -1,5 +1,25 @@
# @llamaindex/autotool
## 5.0.17
### Patch Changes
- llamaindex@0.8.17
## 5.0.16
### Patch Changes
- llamaindex@0.8.16
## 5.0.15
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 5.0.14
### Patch Changes
@@ -1,5 +1,28 @@
# @llamaindex/autotool-01-node-example
## 0.0.60
### Patch Changes
- llamaindex@0.8.17
- @llamaindex/autotool@5.0.17
## 0.0.59
### Patch Changes
- llamaindex@0.8.16
- @llamaindex/autotool@5.0.16
## 0.0.58
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
- @llamaindex/autotool@5.0.15
## 0.0.57
### Patch Changes
@@ -13,5 +13,5 @@
"scripts": {
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
},
"version": "0.0.57"
"version": "0.0.60"
}
@@ -1,5 +1,28 @@
# @llamaindex/autotool-02-next-example
## 0.1.104
### Patch Changes
- llamaindex@0.8.17
- @llamaindex/autotool@5.0.17
## 0.1.103
### Patch Changes
- llamaindex@0.8.16
- @llamaindex/autotool@5.0.16
## 0.1.102
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
- @llamaindex/autotool@5.0.15
## 0.1.101
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/autotool-02-next-example",
"private": true,
"version": "0.1.101",
"version": "0.1.104",
"scripts": {
"dev": "next dev",
"build": "next build",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/autotool",
"type": "module",
"version": "5.0.14",
"version": "5.0.17",
"description": "auto transpile your JS function to LLM Agent compatible",
"files": [
"dist",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/cloud
## 2.0.11
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 2.0.10
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/cloud",
"version": "2.0.10",
"version": "2.0.11",
"type": "module",
"license": "MIT",
"scripts": {
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/community
## 0.0.69
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 0.0.68
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/community",
"description": "Community package for LlamaIndexTS",
"version": "0.0.68",
"version": "0.0.69",
"type": "module",
"types": "dist/type/index.d.ts",
"main": "dist/cjs/index.js",
+6
View File
@@ -1,5 +1,11 @@
# @llamaindex/core
## 0.4.11
### Patch Changes
- 6d22fa2: Get PromptTemplate template variables at run-time
## 0.4.10
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/core",
"type": "module",
"version": "0.4.10",
"version": "0.4.11",
"description": "LlamaIndex Core Module",
"exports": {
"./agent": {
+13
View File
@@ -32,6 +32,10 @@ export abstract class BasePromptTemplate<
const Vars extends readonly string[] = string[],
> {
metadata: Metadata = {};
/**
* Set of template variables used in the prompt template. Used for type hints only.
* To get the list of template variables used in the prompt at run-time, use the `vars` method.
*/
templateVars: Set<string> = new Set();
options: Partial<Record<TemplatesVar[number] | (string & {}), string>> = {};
outputParser: BaseOutputParser | undefined;
@@ -223,4 +227,13 @@ export class PromptTemplate<
get template(): Template {
return this.#template;
}
/**
* Returns all the template variables used in the prompt template.
*/
vars(): string[] {
const template = this.template;
const matches = template.match(/\{([^}]+)\}/g) || [];
return [...new Set(matches.map((match) => match.slice(1, -1)))];
}
}
+11
View File
@@ -158,4 +158,15 @@ describe("PromptTemplate", () => {
const formatted = prompt.format({ text: "world", foo: "bar" });
expect(formatted).toBe("hello world bar\noutput_instruction");
});
test("should return all unique template vars of a prompt", () => {
const prompt = new PromptTemplate({
template: "Hello {name}! Your age is {age}. Nice to meet you {name}!",
});
const vars = prompt.vars();
expect(vars).toHaveLength(2);
expect(vars).toContain("name");
expect(vars).toContain("age");
});
});
+20
View File
@@ -1,5 +1,25 @@
# @llamaindex/experimental
## 0.0.129
### Patch Changes
- llamaindex@0.8.17
## 0.0.128
### Patch Changes
- llamaindex@0.8.16
## 0.0.127
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.0.126
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/experimental",
"description": "Experimental package for LlamaIndexTS",
"version": "0.0.126",
"version": "0.0.129",
"type": "module",
"types": "dist/type/index.d.ts",
"main": "dist/cjs/index.js",
+34
View File
@@ -1,5 +1,39 @@
# llamaindex
## 0.8.17
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
- @llamaindex/cloud@2.0.11
- @llamaindex/node-parser@0.0.12
- @llamaindex/anthropic@0.0.20
- @llamaindex/clip@0.0.20
- @llamaindex/deepinfra@0.0.20
- @llamaindex/huggingface@0.0.20
- @llamaindex/ollama@0.0.27
- @llamaindex/openai@0.1.36
- @llamaindex/portkey-ai@0.0.20
- @llamaindex/replicate@0.0.20
- @llamaindex/readers@1.0.13
- @llamaindex/groq@0.0.35
- @llamaindex/vllm@0.0.6
## 0.8.16
### Patch Changes
- Updated dependencies [e60328b]
- @llamaindex/readers@1.0.12
## 0.8.15
### Patch Changes
- 3d503cb: Update azure cosmos db
- 5dae534: fix: propagate queryStr to concrete vectorStore
## 0.8.14
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "llamaindex",
"version": "0.8.14",
"version": "0.8.17",
"license": "MIT",
"type": "module",
"keywords": [
@@ -18,6 +18,7 @@ import {
type NodeWithScore,
} from "@llamaindex/core/schema";
import type { BaseIndexStore } from "@llamaindex/core/storage/index-store";
import { extractText } from "@llamaindex/core/utils";
import type { ServiceContext } from "../../ServiceContext.js";
import { nodeParserFromSettingsOrContext } from "../../Settings.js";
import { RetrieverQueryEngine } from "../../engines/query/RetrieverQueryEngine.js";
@@ -449,8 +450,13 @@ export class VectorIndexRetriever extends BaseRetriever {
filters?: MetadataFilters,
): Promise<NodeWithScore[]> {
// convert string message to multi-modal format
let queryStr = query;
if (typeof query === "string") {
query = [{ type: "text", text: query }];
queryStr = query;
query = [{ type: "text", text: queryStr }];
} else {
queryStr = extractText(query);
}
// overwrite embed model if specified, otherwise use the one from the vector store
const embedModel = this.index.embedModel ?? vectorStore.embedModel;
@@ -460,6 +466,7 @@ export class VectorIndexRetriever extends BaseRetriever {
const queryEmbedding = await embedModel.getQueryEmbedding(item);
if (queryEmbedding) {
const result = await vectorStore.query({
queryStr,
queryEmbedding,
mode: VectorStoreQueryMode.DEFAULT,
similarityTopK: this.topK[type]!,
@@ -3,7 +3,7 @@ import { Container, CosmosClient, Database } from "@azure/cosmos";
import { DefaultAzureCredential, type TokenCredential } from "@azure/identity";
import { BaseKVStore } from "@llamaindex/core/storage/kv-store";
import { getEnv } from "@llamaindex/env";
const USER_AGENT_SUFFIX = "LlamaIndex-CDBNoSQL-KVStore-JavaScript";
const USER_AGENT_SUFFIX = "llamaindex-cdbnosql-kvstore-javascript";
const DEFAULT_CHAT_DATABASE = "KVStoreDB";
const DEFAULT_CHAT_CONTAINER = "KVStoreContainer";
const DEFAULT_OFFER_THROUGHPUT = 400;
@@ -82,7 +82,7 @@ export class AzureCosmosNoSqlKVStore extends BaseKVStore {
super();
if (!cosmosClient) {
throw new Error(
"CosmosClient is required for AzureCosmosDBNoSQLVectorStore initialization",
"CosmosClient is required for AzureCosmosDBNoSQLKVStore initialization",
);
}
this.cosmosClient = cosmosClient;
@@ -55,8 +55,18 @@ export interface AzureCosmosDBNoSQLConfig
readonly flatMetadata?: boolean;
readonly idKey?: string;
}
/**
* Query options for the `AzureCosmosDBNoSQLVectorStore.query` method.
* @property includeEmbeddings - Whether to include the embeddings in the result. Default false
* @property includeVectorDistance - Whether to include the vector distance in the result. Default true
* @property whereClause - The where clause to use in the query. While writing this clause, use `c` as the alias for the container and do not include the `WHERE` keyword.
*/
export interface AzureCosmosQueryOptions {
includeVectorDistance?: boolean;
whereClause?: string;
}
const USER_AGENT_SUFFIX = "LlamaIndex-CDBNoSQL-VectorStore-JavaScript";
const USER_AGENT_SUFFIX = "llamaindex-cdbnosql-vectorstore-javascript";
const DEFAULT_VECTOR_EMBEDDING_POLICY = {
vectorEmbeddings: [
@@ -98,6 +108,22 @@ function parseConnectionString(connectionString: string): {
return { endpoint, key: accountKey };
}
/**
* utility function to build the query string for the CosmosDB query
*/
function queryBuilder(options: AzureCosmosQueryOptions): string {
let initialQuery =
"SELECT TOP @k c[@id] as id, c[@text] as text, c[@metadata] as metadata";
if (options.includeVectorDistance !== false) {
initialQuery += `, VectorDistance(c[@embeddingKey],@embedding) AS SimilarityScore`;
}
initialQuery += ` FROM c`;
if (options.whereClause) {
initialQuery += ` WHERE ${options.whereClause}`;
}
initialQuery += ` ORDER BY VectorDistance(c[@embeddingKey],@embedding)`;
return initialQuery;
}
export class AzureCosmosDBNoSqlVectorStore extends BaseVectorStore {
storesText: boolean = true;
@@ -334,21 +360,25 @@ export class AzureCosmosDBNoSqlVectorStore extends BaseVectorStore {
*/
async query(
query: VectorStoreQuery,
options?: object,
options: AzureCosmosQueryOptions = {},
): Promise<VectorStoreQueryResult> {
await this.initialize();
if (!query.queryEmbedding || query.queryEmbedding.length === 0) {
throw new Error(
"queryEmbedding is required for AzureCosmosDBNoSqlVectorStore query",
);
}
const params = {
vector: query.queryEmbedding!,
k: query.similarityTopK,
};
const builtQuery = queryBuilder(options);
const nodes: BaseNode[] = [];
const ids: string[] = [];
const similarities: number[] = [];
const queryResults = await this.container.items
.query({
query:
"SELECT TOP @k c[@id] as id, c[@text] as text, c[@metadata] as metadata, VectorDistance(c[@embeddingKey],@embedding) AS SimilarityScore FROM c ORDER BY VectorDistance(c[@embeddingKey],@embedding)",
query: builtQuery,
parameters: [
{ name: "@k", value: params.k },
{ name: "@id", value: this.idKey },
@@ -14,9 +14,10 @@ import {
Settings,
VectorStoreQueryMode,
type AzureCosmosDBNoSQLConfig,
type AzureCosmosQueryOptions,
type VectorStoreQueryResult,
} from "llamaindex";
import { beforeEach, describe, expect, it } from "vitest";
import { beforeAll, describe, expect, it } from "vitest";
dotenv.config();
/*
* To run this test, you need have an Azure Cosmos DB for NoSQL instance
@@ -64,7 +65,10 @@ Settings.llm = new OpenAI(llmInit);
Settings.embedModel = new OpenAIEmbedding(embedModelInit);
// This test is skipped because it requires an Azure Cosmos DB instance and OpenAI API keys
describe.skip("AzureCosmosDBNoSQLVectorStore", () => {
beforeEach(async () => {
let vectorStore: AzureCosmosDBNoSqlVectorStore;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let embeddings: any = [];
beforeAll(async () => {
if (process.env.AZURE_COSMOSDB_NOSQL_CONNECTION_STRING) {
client = new CosmosClient(
process.env.AZURE_COSMOSDB_NOSQL_CONNECTION_STRING,
@@ -79,15 +83,12 @@ describe.skip("AzureCosmosDBNoSQLVectorStore", () => {
"Please set the environment variable AZURE_COSMOSDB_NOSQL_CONNECTION_STRING or AZURE_COSMOSDB_NOSQL_ENDPOINT",
);
}
// Make sure the database does not exists
try {
await client.database(DATABASE_NAME).delete();
} catch {
// Ignore error if the database does not exist
}
});
it("perform query", async () => {
const config: AzureCosmosDBNoSQLConfig = {
idKey: "name",
textKey: "customText",
@@ -134,9 +135,9 @@ describe.skip("AzureCosmosDBNoSQLVectorStore", () => {
},
};
const vectorStore = new AzureCosmosDBNoSqlVectorStore(config);
vectorStore = new AzureCosmosDBNoSqlVectorStore(config);
const embeddings = await Settings.embedModel.getTextEmbeddings([
embeddings = await Settings.embedModel.getTextEmbeddings([
"This book is about politics",
"Cats sleeps a lot.",
"Sandwiches taste good.",
@@ -150,28 +151,29 @@ describe.skip("AzureCosmosDBNoSQLVectorStore", () => {
id_: "1",
text: "This book is about politics",
embedding: embeddings[0],
metadata: { key: "politics" },
metadata: { key: "politics", number: 1 },
}),
new Document({
id_: "2",
text: "Cats sleeps a lot.",
embedding: embeddings[1],
metadata: { key: "cats" },
metadata: { key: "cats", number: 2 },
}),
new Document({
id_: "3",
text: "Sandwiches taste good.",
embedding: embeddings[2],
metadata: { key: "sandwiches" },
metadata: { key: "sandwiches", number: 3 },
}),
new Document({
id_: "4",
text: "The house is open",
embedding: embeddings[3],
metadata: { key: "house" },
metadata: { key: "house", number: 4 },
}),
]);
});
it("perform query", async () => {
const results: VectorStoreQueryResult = await vectorStore.query({
queryEmbedding: embeddings[4] || [],
similarityTopK: 1,
@@ -179,5 +181,62 @@ describe.skip("AzureCosmosDBNoSQLVectorStore", () => {
});
expect(results.ids.length).toEqual(1);
expect(results.ids[0]).toEqual("3");
expect(results.similarities).toBeDefined();
expect(results.similarities[0]).toBeDefined();
}, 1000000);
it("perform query with where clause", async () => {
const options: AzureCosmosQueryOptions = {
whereClause: "c.customMetadata.number > 3",
};
const results: VectorStoreQueryResult = await vectorStore.query(
{
queryEmbedding: embeddings[4] || [],
similarityTopK: 1,
mode: VectorStoreQueryMode.DEFAULT,
},
options,
);
expect(results.ids.length).toEqual(1);
expect(results.ids[0]).toEqual("4");
expect(results.similarities).toBeDefined();
expect(results.similarities[0]).toBeDefined();
}, 1000000);
it("perform query with includeVectorDistance false", async () => {
const options: AzureCosmosQueryOptions = {
includeVectorDistance: false,
};
const results: VectorStoreQueryResult = await vectorStore.query(
{
queryEmbedding: embeddings[4] || [],
similarityTopK: 1,
mode: VectorStoreQueryMode.DEFAULT,
},
options,
);
expect(results.ids.length).toEqual(1);
expect(results.ids[0]).toEqual("3");
expect(results.similarities).toBeDefined();
expect(results.similarities[0]).toBeUndefined();
}, 1000000);
it("perform query with includeVectorDistance false and whereClause", async () => {
const options: AzureCosmosQueryOptions = {
includeVectorDistance: false,
whereClause: "c.customMetadata.number > 3",
};
const results: VectorStoreQueryResult = await vectorStore.query(
{
queryEmbedding: embeddings[4] || [],
similarityTopK: 1,
mode: VectorStoreQueryMode.DEFAULT,
},
options,
);
expect(results.ids.length).toEqual(1);
expect(results.ids[0]).toEqual("4");
expect(results.similarities).toBeDefined();
expect(results.similarities[0]).toBeUndefined();
}, 1000000);
});
@@ -1,6 +1,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { BaseNode } from "@llamaindex/core/schema";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { VectorStoreQueryMode } from "../../src/vector-store.js";
import { TestableAzureCosmosDBNoSqlVectorStore } from "../mocks/TestableAzureCosmosDBNoSqlVectorStore.js";
import { createMockClient } from "../utility/mockCosmosClient.js"; // Import the mock client
@@ -95,4 +96,27 @@ describe("AzureCosmosDBNoSqlVectorStore Tests", () => {
expect(client.databases.containers.items.create).toHaveBeenCalledTimes(2);
expect(result).toEqual(["node-0", "node-1"]);
});
it("should throw error if no query embedding is provided", async () => {
const client = createMockClient();
const store = new TestableAzureCosmosDBNoSqlVectorStore({
client: client as any,
endpoint: "https://example.com",
idKey: "id",
textKey: "text",
metadataKey: "metadata",
});
expect(store).toBeDefined();
await expect(
store.query({
queryEmbedding: [],
similarityTopK: 4,
mode: VectorStoreQueryMode.DEFAULT,
}),
).rejects.toThrowError(
"queryEmbedding is required for AzureCosmosDBNoSqlVectorStore query",
);
});
});
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/node-parser
## 0.0.12
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 0.0.11
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/node-parser",
"version": "0.0.11",
"version": "0.0.12",
"description": "Node parser for LlamaIndex",
"type": "module",
"exports": {
@@ -1,5 +1,12 @@
# @llamaindex/anthropic
## 0.0.20
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 0.0.19
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/anthropic",
"description": "Anthropic Adapter for LlamaIndex",
"version": "0.0.19",
"version": "0.0.20",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+8
View File
@@ -1,5 +1,13 @@
# @llamaindex/clip
## 0.0.20
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
- @llamaindex/openai@0.1.36
## 0.0.19
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/clip",
"description": "Clip Embedding Adapter for LlamaIndex",
"version": "0.0.19",
"version": "0.0.20",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
@@ -1,5 +1,13 @@
# @llamaindex/deepinfra
## 0.0.20
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
- @llamaindex/openai@0.1.36
## 0.0.19
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/deepinfra",
"description": "Deepinfra Adapter for LlamaIndex",
"version": "0.0.19",
"version": "0.0.20",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+6
View File
@@ -1,5 +1,11 @@
# @llamaindex/groq
## 0.0.35
### Patch Changes
- @llamaindex/openai@0.1.36
## 0.0.34
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/groq",
"description": "Groq Adapter for LlamaIndex",
"version": "0.0.34",
"version": "0.0.35",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,13 @@
# @llamaindex/huggingface
## 0.0.20
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
- @llamaindex/openai@0.1.36
## 0.0.19
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/huggingface",
"description": "Huggingface Adapter for LlamaIndex",
"version": "0.0.19",
"version": "0.0.20",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/ollama
## 0.0.27
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 0.0.26
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/ollama",
"description": "Ollama Adapter for LlamaIndex",
"version": "0.0.26",
"version": "0.0.27",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/openai
## 0.1.36
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 0.1.35
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/openai",
"description": "OpenAI Adapter for LlamaIndex",
"version": "0.1.35",
"version": "0.1.36",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,12 @@
# @llamaindex/portkey-ai
## 0.0.20
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 0.0.19
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/portkey-ai",
"description": "Portkey Adapter for LlamaIndex",
"version": "0.0.19",
"version": "0.0.20",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,12 @@
# @llamaindex/replicate
## 0.0.20
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 0.0.19
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/replicate",
"description": "Replicate Adapter for LlamaIndex",
"version": "0.0.19",
"version": "0.0.20",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+6
View File
@@ -1,5 +1,11 @@
# @llamaindex/vllm
## 0.0.6
### Patch Changes
- @llamaindex/openai@0.1.36
## 0.0.5
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/vllm",
"description": "vLLM Adapter for LlamaIndex",
"version": "0.0.5",
"version": "0.0.6",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+13
View File
@@ -1,5 +1,18 @@
# @llamaindex/readers
## 1.0.13
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 1.0.12
### Patch Changes
- e60328b: fix: import error in cjs
## 1.0.11
### Patch Changes
+1 -97
View File
@@ -1,20 +1,12 @@
{
"name": "@llamaindex/readers",
"description": "LlamaIndex Readers",
"version": "1.0.11",
"version": "1.0.13",
"type": "module",
"exports": {
"./node/hook": "./node/dist/hook.js",
"./node": "./node/dist/index.js",
"./assembly-ai": {
"edge-light": {
"types": "./assembly-ai/dist/index.edge-light.d.ts",
"default": "./assembly-ai/dist/index.edge-light.js"
},
"workerd": {
"types": "./assembly-ai/dist/index.workerd.d.ts",
"default": "./assembly-ai/dist/index.workerd.js"
},
"require": {
"types": "./assembly-ai/dist/index.d.cts",
"default": "./assembly-ai/dist/index.cjs"
@@ -25,14 +17,6 @@
}
},
"./cosmosdb": {
"edge-light": {
"types": "./cosmosdb/dist/index.edge-light.d.ts",
"default": "./cosmosdb/dist/index.edge-light.js"
},
"workerd": {
"types": "./cosmosdb/dist/index.workerd.d.ts",
"default": "./cosmosdb/dist/index.workerd.js"
},
"require": {
"types": "./cosmosdb/dist/index.d.cts",
"default": "./cosmosdb/dist/index.cjs"
@@ -79,14 +63,6 @@
}
},
"./discord": {
"edge-light": {
"types": "./discord/dist/index.edge-light.d.ts",
"default": "./discord/dist/index.edge-light.js"
},
"workerd": {
"types": "./discord/dist/index.workerd.d.ts",
"default": "./discord/dist/index.workerd.js"
},
"require": {
"types": "./discord/dist/index.d.cts",
"default": "./discord/dist/index.cjs"
@@ -97,14 +73,6 @@
}
},
"./docx": {
"edge-light": {
"types": "./docx/dist/index.edge-light.d.ts",
"default": "./docx/dist/index.edge-light.js"
},
"workerd": {
"types": "./docx/dist/index.workerd.d.ts",
"default": "./docx/dist/index.workerd.js"
},
"require": {
"types": "./docx/dist/index.d.cts",
"default": "./docx/dist/index.cjs"
@@ -115,14 +83,6 @@
}
},
"./html": {
"edge-light": {
"types": "./html/dist/index.edge-light.d.ts",
"default": "./html/dist/index.edge-light.js"
},
"workerd": {
"types": "./html/dist/index.workerd.d.ts",
"default": "./html/dist/index.workerd.js"
},
"require": {
"types": "./html/dist/index.d.cts",
"default": "./html/dist/index.cjs"
@@ -133,14 +93,6 @@
}
},
"./image": {
"edge-light": {
"types": "./image/dist/index.edge-light.d.ts",
"default": "./image/dist/index.edge-light.js"
},
"workerd": {
"types": "./image/dist/index.workerd.d.ts",
"default": "./image/dist/index.workerd.js"
},
"require": {
"types": "./image/dist/index.d.cts",
"default": "./image/dist/index.cjs"
@@ -151,14 +103,6 @@
}
},
"./json": {
"edge-light": {
"types": "./json/dist/index.edge-light.d.ts",
"default": "./json/dist/index.edge-light.js"
},
"workerd": {
"types": "./json/dist/index.workerd.d.ts",
"default": "./json/dist/index.workerd.js"
},
"require": {
"types": "./json/dist/index.d.cts",
"default": "./json/dist/index.cjs"
@@ -169,14 +113,6 @@
}
},
"./markdown": {
"edge-light": {
"types": "./markdown/dist/index.edge-light.d.ts",
"default": "./markdown/dist/index.edge-light.js"
},
"workerd": {
"types": "./markdown/dist/index.workerd.d.ts",
"default": "./markdown/dist/index.workerd.js"
},
"require": {
"types": "./markdown/dist/index.d.cts",
"default": "./markdown/dist/index.cjs"
@@ -187,14 +123,6 @@
}
},
"./mongo": {
"edge-light": {
"types": "./mongo/dist/index.edge-light.d.ts",
"default": "./mongo/dist/index.edge-light.js"
},
"workerd": {
"types": "./mongo/dist/index.workerd.d.ts",
"default": "./mongo/dist/index.workerd.js"
},
"require": {
"types": "./mongo/dist/index.d.cts",
"default": "./mongo/dist/index.cjs"
@@ -205,14 +133,6 @@
}
},
"./notion": {
"edge-light": {
"types": "./notion/dist/index.edge-light.d.ts",
"default": "./notion/dist/index.edge-light.js"
},
"workerd": {
"types": "./notion/dist/index.workerd.d.ts",
"default": "./notion/dist/index.workerd.js"
},
"require": {
"types": "./notion/dist/index.d.cts",
"default": "./notion/dist/index.cjs"
@@ -223,14 +143,6 @@
}
},
"./pdf": {
"edge-light": {
"types": "./pdf/dist/index.edge-light.d.ts",
"default": "./pdf/dist/index.edge-light.js"
},
"workerd": {
"types": "./pdf/dist/index.workerd.d.ts",
"default": "./pdf/dist/index.workerd.js"
},
"require": {
"types": "./pdf/dist/index.d.cts",
"default": "./pdf/dist/index.cjs"
@@ -241,14 +153,6 @@
}
},
"./text": {
"edge-light": {
"types": "./text/dist/index.edge-light.d.ts",
"default": "./text/dist/index.edge-light.js"
},
"workerd": {
"types": "./text/dist/index.workerd.d.ts",
"default": "./text/dist/index.workerd.js"
},
"require": {
"types": "./text/dist/index.d.cts",
"default": "./text/dist/index.cjs"
+28
View File
@@ -1,5 +1,33 @@
# @llamaindex/unit-test
## 0.0.27
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
- @llamaindex/cloud@2.0.11
- llamaindex@0.8.17
- @llamaindex/node-parser@0.0.12
- @llamaindex/openai@0.1.36
- @llamaindex/readers@1.0.13
## 0.0.26
### Patch Changes
- Updated dependencies [e60328b]
- @llamaindex/readers@1.0.12
- llamaindex@0.8.16
## 0.0.25
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.0.24
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/unit-test",
"private": true,
"version": "0.0.24",
"version": "0.0.27",
"type": "module",
"scripts": {
"test": "vitest run"