Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: @llamaindex/azure #1601

Merged
merged 14 commits into from
Jan 21, 2025
8 changes: 8 additions & 0 deletions .changeset/tender-swans-call.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@llamaindex/core": patch
"llamaindex": patch
"@llamaindex/azure": patch
"@llamaindex/llamaindex-test": patch
---

refactor: @llamaindex/azure
28 changes: 28 additions & 0 deletions packages/core/src/vector-store/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,31 @@ export abstract class BaseVectorStore<Client = unknown> {
this.embedModel = params?.embeddingModel ?? Settings.embedModel;
}
}

export const parsePrimitiveValue = (
value?: MetadataFilterValue,
): string | number => {
if (typeof value !== "number" && typeof value !== "string") {
throw new Error("Value must be a string or number");
}
return value;
};

export const parseArrayValue = (
value?: MetadataFilterValue,
): string[] | number[] => {
const isPrimitiveArray =
Array.isArray(value) &&
value.every((v) => typeof v === "string" || typeof v === "number");
if (!isPrimitiveArray) {
throw new Error("Value must be an array of strings or numbers");
}
return value;
};

export const parseNumberValue = (value?: MetadataFilterValue): number => {
if (typeof value !== "number") throw new Error("Value must be a number");
return value;
};

export * from "./utils.js";
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import type { BaseNode, Metadata } from "@llamaindex/core/schema";
import { ObjectType, jsonToNode } from "@llamaindex/core/schema";
import type { MetadataFilterValue } from "@llamaindex/core/vector-store";
import {
ObjectType,
jsonToNode,
type BaseNode,
type Metadata,
} from "../schema";

const DEFAULT_TEXT_KEY = "text";

Expand Down Expand Up @@ -91,32 +94,6 @@ export function metadataDictToNode(
}
}

export const parsePrimitiveValue = (
value?: MetadataFilterValue,
): string | number => {
if (typeof value !== "number" && typeof value !== "string") {
throw new Error("Value must be a string or number");
}
return value;
};

export const parseArrayValue = (
value?: MetadataFilterValue,
): string[] | number[] => {
const isPrimitiveArray =
Array.isArray(value) &&
value.every((v) => typeof v === "string" || typeof v === "number");
if (!isPrimitiveArray) {
throw new Error("Value must be an array of strings or numbers");
}
return value;
};

export const parseNumberValue = (value?: MetadataFilterValue): number => {
if (typeof value !== "number") throw new Error("Value must be a number");
return value;
};

export const escapeLikeString = (value: string) => {
return value.replace(/[%_\\]/g, "\\$&");
};
4 changes: 1 addition & 3 deletions packages/llamaindex/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@
"@anthropic-ai/sdk": "0.32.1",
"@aws-crypto/sha256-js": "^5.2.0",
"@aws-sdk/client-sso-oidc": "^3.693.0",
"@azure/cosmos": "^4.1.1",
"@azure/identity": "^4.4.1",
"@azure/search-documents": "^12.1.0",
"@datastax/astra-db-ts": "^1.4.1",
"@discoveryjs/json-ext": "^0.6.1",
"@google-cloud/vertexai": "1.9.0",
Expand All @@ -47,6 +44,7 @@
"@llamaindex/replicate": "workspace:*",
"@llamaindex/vllm": "workspace:*",
"@llamaindex/postgres": "workspace:*",
"@llamaindex/azure": "workspace:*",
"@mistralai/mistralai": "^1.3.4",
"@mixedbread-ai/sdk": "^2.2.11",
"@pinecone-database/pinecone": "^4.0.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/llamaindex/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ export { type VertexGeminiSessionOptions } from "./llm/gemini/types.js";
export { GeminiVertexSession } from "./llm/gemini/vertex.js";

// Expose AzureDynamicSessionTool for node.js runtime only
export { AzureDynamicSessionTool } from "@llamaindex/azure";
export { JinaAIEmbedding } from "./embeddings/JinaAIEmbedding.js";
export { AzureDynamicSessionTool } from "./tools/AzureDynamicSessionTool.node.js";

// Don't export vector store modules for non-node.js runtime on top level,
// as we cannot guarantee that they will work in other environments
Expand Down
10 changes: 2 additions & 8 deletions packages/llamaindex/src/storage/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from "@llamaindex/azure/storage";
export * from "@llamaindex/core/storage/chat-store";
export * from "@llamaindex/core/storage/doc-store";
export * from "@llamaindex/core/storage/index-store";
Expand All @@ -7,14 +8,7 @@ export {
PostgresIndexStore,
PostgresKVStore,
} from "@llamaindex/postgres";
export * from "./chatStore/AzureCosmosMongovCoreChatStore.js";
export * from "./chatStore/AzureCosmosNoSqlChatStore.js";
export * from "./docStore/AzureCosmosMongovCoreDocumentStore.js";
export * from "./docStore/AzureCosmosNoSqlDocumentStore.js";
export { SimpleDocumentStore } from "./docStore/SimpleDocumentStore.js";
export * from "./FileSystem.js";
export * from "./indexStore/AzureCosmosMongovCoreIndexStore.js";
export * from "./indexStore/AzureCosmosNoSqlIndexStore.js";
export * from "./kvStore/AzureCosmosMongovCoreKVStore.js";
export * from "./kvStore/AzureCosmosNoSqlKVStore.js";

export * from "./StorageContext.js";
2 changes: 1 addition & 1 deletion packages/llamaindex/src/tools/ToolsFactory.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {
AzureDynamicSessionTool,
type AzureDynamicSessionToolParams,
} from "./AzureDynamicSessionTool.node.js";
} from "@llamaindex/azure";
import { WikipediaTool, type WikipediaToolParams } from "./WikipediaTool.js";

// eslint-disable-next-line @typescript-eslint/no-namespace
Expand Down
8 changes: 3 additions & 5 deletions packages/llamaindex/src/vector-store/AstraDBVectorStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,16 @@ import {
BaseVectorStore,
FilterCondition,
FilterOperator,
metadataDictToNode,
nodeToMetadata,
parseArrayValue,
type MetadataFilter,
type MetadataFilters,
type VectorStoreBaseParams,
type VectorStoreQuery,
type VectorStoreQueryResult,
} from "@llamaindex/core/vector-store";
import { getEnv } from "@llamaindex/env";
import {
metadataDictToNode,
nodeToMetadata,
parseArrayValue,
} from "./utils.js";

export class AstraDBVectorStore extends BaseVectorStore {
storesText: boolean = true;
Expand Down
3 changes: 2 additions & 1 deletion packages/llamaindex/src/vector-store/ChromaVectorStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import {
BaseVectorStore,
FilterCondition,
FilterOperator,
metadataDictToNode,
nodeToMetadata,
VectorStoreQueryMode,
type MetadataFilters,
type VectorStoreBaseParams,
Expand All @@ -19,7 +21,6 @@ import {
type Where,
type WhereDocument,
} from "chromadb";
import { metadataDictToNode, nodeToMetadata } from "./utils.js";

type ChromaDeleteOptions = {
where?: Where;
Expand Down
10 changes: 4 additions & 6 deletions packages/llamaindex/src/vector-store/MilvusVectorStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ import type { ChannelOptions } from "@grpc/grpc-js";
import { BaseNode, MetadataMode, type Metadata } from "@llamaindex/core/schema";
import {
BaseVectorStore,
metadataDictToNode,
nodeToMetadata,
parseArrayValue,
parsePrimitiveValue,
type MetadataFilters,
type VectorStoreBaseParams,
type VectorStoreQuery,
Expand All @@ -16,12 +20,6 @@ import {
type RowData,
type SearchSimpleReq,
} from "@zilliz/milvus2-sdk-node";
import {
metadataDictToNode,
nodeToMetadata,
parseArrayValue,
parsePrimitiveValue,
} from "./utils.js";

function parseScalarFilters(scalarFilters: MetadataFilters): string {
const condition = scalarFilters.condition ?? "and";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import { MetadataMode } from "@llamaindex/core/schema";
import {
BaseVectorStore,
FilterCondition,
metadataDictToNode,
nodeToMetadata,
type FilterOperator,
type MetadataFilter,
type MetadataFilters,
Expand All @@ -14,7 +16,6 @@ import {
import { getEnv } from "@llamaindex/env";
import type { BulkWriteOptions, Collection } from "mongodb";
import { MongoClient } from "mongodb";
import { metadataDictToNode, nodeToMetadata } from "./utils.js";

// define your Atlas Search index. See detail https://www.mongodb.com/docs/atlas/atlas-search/field-types/knn-vector/
const DEFAULT_EMBEDDING_DEFINITION = {
Expand Down
5 changes: 4 additions & 1 deletion packages/llamaindex/src/vector-store/PineconeVectorStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ import {
} from "@llamaindex/core/vector-store";

import type { BaseNode, Metadata } from "@llamaindex/core/schema";
import {
metadataDictToNode,
nodeToMetadata,
} from "@llamaindex/core/vector-store";
import { getEnv } from "@llamaindex/env";
import type {
FetchResponse,
Expand All @@ -19,7 +23,6 @@ import type {
ScoredPineconeRecord,
} from "@pinecone-database/pinecone";
import { type Pinecone } from "@pinecone-database/pinecone";
import { metadataDictToNode, nodeToMetadata } from "./utils.js";

type PineconeParams = {
indexName?: string;
Expand Down
5 changes: 4 additions & 1 deletion packages/llamaindex/src/vector-store/QdrantVectorStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,12 @@ import {
type VectorStoreQueryResult,
} from "@llamaindex/core/vector-store";

import {
metadataDictToNode,
nodeToMetadata,
} from "@llamaindex/core/vector-store";
import type { QdrantClientParams, Schemas } from "@qdrant/js-client-rest";
import { QdrantClient } from "@qdrant/js-client-rest";
import { metadataDictToNode, nodeToMetadata } from "./utils.js";

type QdrantFilter = Schemas["Filter"];
type QdrantMustConditions = QdrantFilter["must"];
Expand Down
8 changes: 3 additions & 5 deletions packages/llamaindex/src/vector-store/SimpleVectorStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import type { BaseNode } from "@llamaindex/core/schema";
import {
BaseVectorStore,
FilterOperator,
nodeToMetadata,
parseArrayValue,
parsePrimitiveValue,
VectorStoreQueryMode,
type MetadataFilter,
type MetadataFilters,
Expand All @@ -17,11 +20,6 @@ import {
} from "@llamaindex/core/vector-store";
import { fs, path } from "@llamaindex/env";
import { exists } from "../storage/FileSystem.js";
import {
nodeToMetadata,
parseArrayValue,
parsePrimitiveValue,
} from "./utils.js";

const LEARNER_MODES = new Set<VectorStoreQueryMode>([
VectorStoreQueryMode.SVM,
Expand Down
5 changes: 4 additions & 1 deletion packages/llamaindex/src/vector-store/UpstashVectorStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ import {
} from "@llamaindex/core/vector-store";

import type { BaseNode, Metadata, TextNode } from "@llamaindex/core/schema";
import {
metadataDictToNode,
nodeToMetadata,
} from "@llamaindex/core/vector-store";
import { getEnv } from "@llamaindex/env";
import { Index } from "@upstash/vector";
import { metadataDictToNode, nodeToMetadata } from "./utils.js";

type UpstashParams = {
namespace?: string;
Expand Down
10 changes: 4 additions & 6 deletions packages/llamaindex/src/vector-store/WeaviateVectorStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ import weaviate, {

import {
BaseVectorStore,
metadataDictToNode,
nodeToMetadata,
parseArrayValue,
parseNumberValue,
VectorStoreQueryMode,
type MetadataFilter,
type MetadataFilters,
Expand All @@ -19,12 +23,6 @@ import {
} from "@llamaindex/core/vector-store";
import { getEnv } from "@llamaindex/env";
import type { BaseHybridOptions } from "weaviate-client";
import {
metadataDictToNode,
nodeToMetadata,
parseArrayValue,
parseNumberValue,
} from "./utils.js";

const NODE_SCHEMA = [
{
Expand Down
4 changes: 1 addition & 3 deletions packages/llamaindex/src/vector-store/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from "@llamaindex/azure";
export * from "@llamaindex/core/vector-store";
export {
DEFAULT_DIMENSIONS,
Expand All @@ -7,9 +8,6 @@ export {
type PGVectorStoreConfig,
} from "@llamaindex/postgres";
export * from "./AstraDBVectorStore.js";
export * from "./azure/AzureAISearchVectorStore.js";
export * from "./AzureCosmosDBMongoVectorStore.js";
export * from "./AzureCosmosDBNoSqlVectorStore.js";
export * from "./ChromaVectorStore.js";
export * from "./MilvusVectorStore.js";
export * from "./MongoDBAtlasVectorStore.js";
Expand Down
2 changes: 1 addition & 1 deletion packages/llamaindex/tests/VectorStore.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Document, MetadataMode } from "@llamaindex/core/schema";
import {
metadataDictToNode,
nodeToMetadata,
} from "llamaindex/vector-store/utils";
} from "@llamaindex/core/vector-store";
import { beforeEach, describe, expect, test } from "vitest";

describe("Testing VectorStore utils", () => {
Expand Down
3 changes: 3 additions & 0 deletions packages/llamaindex/tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
"test": "vitest run"
},
"devDependencies": {
"@azure/cosmos": "^4.1.1",
"@azure/identity": "^4.4.1",
"@azure/search-documents": "^12.1.0",
"@faker-js/faker": "^9.2.0",
"dotenv": "^16.4.5",
"llamaindex": "workspace:*",
Expand Down
Loading
Loading