feat: Add Azure AI Search vector store support for TypeScript SDK (#3549)

This commit is contained in:
G Karthik Koundinya
2025-10-15 11:19:10 -07:00
committed by GitHub
parent ea22e8d9cd
commit a40314c971
7 changed files with 754 additions and 0 deletions
@@ -0,0 +1,56 @@
import { Memory } from "../../src";
import { runTests } from "../utils/test-utils";
export async function demoAzureAISearch() {
console.log("\n=== Testing Azure AI Search Store ===\n");
const memory = new Memory({
version: "v1.1",
embedder: {
provider: "openai",
config: {
apiKey: process.env.OPENAI_API_KEY || "",
model: "text-embedding-3-small",
},
},
vectorStore: {
provider: "azure-ai-search",
config: {
collectionName: "memories",
serviceName: process.env.AZURE_AI_SEARCH_SERVICE_NAME || "",
apiKey: process.env.AZURE_AI_SEARCH_API_KEY,
embeddingModelDims: 1536,
compressionType: "none", // Options: "none", "scalar", "binary"
useFloat16: false,
hybridSearch: false,
vectorFilterMode: "preFilter", // Options: "preFilter", "postFilter"
},
},
llm: {
provider: "openai",
config: {
apiKey: process.env.OPENAI_API_KEY || "",
model: "gpt-4-turbo-preview",
},
},
historyDbPath: "memory.db",
});
await runTests(memory);
}
if (require.main === module) {
if (!process.env.AZURE_AI_SEARCH_SERVICE_NAME) {
console.log(
"\nSkipping Azure AI Search test - AZURE_AI_SEARCH_SERVICE_NAME not set",
);
console.log("Set environment variables:");
console.log(" - AZURE_AI_SEARCH_SERVICE_NAME (required)");
console.log(
" - AZURE_AI_SEARCH_API_KEY (optional, uses DefaultAzureCredential if not set)",
);
console.log(" - OPENAI_API_KEY (required for embeddings and LLM)");
process.exit(0);
}
demoAzureAISearch();
}
@@ -1,6 +1,7 @@
import dotenv from "dotenv";
import { demoMemoryStore } from "./memory";
import { demoSupabase } from "./supabase";
import { demoAzureAISearch } from "./azure-ai-search";
// import { demoQdrant } from "./qdrant";
// import { demoRedis } from "./redis";
// import { demoPGVector } from "./pgvector";
@@ -15,6 +16,7 @@ async function main() {
const stores: Record<string, () => Promise<void>> = {
// memory: demoMemoryStore,
supabase: demoSupabase,
"azure-ai-search": demoAzureAISearch,
// Uncomment these as they are implemented
// qdrant: demoQdrant,
// redis: demoRedis,