-
Notifications
You must be signed in to change notification settings - Fork 0
feat: Integrate OpenSearch as Vector Store #46
Copy link
Copy link
Open
Labels
backendBackend services, API development, and server-side logic related issuesBackend services, API development, and server-side logic related issuesvector databaseVector database operations, embeddings, and semantic search implementation issuesVector database operations, embeddings, and semantic search implementation issues
Description
Metadata
Metadata
Assignees
Labels
backendBackend services, API development, and server-side logic related issuesBackend services, API development, and server-side logic related issuesvector databaseVector database operations, embeddings, and semantic search implementation issuesVector database operations, embeddings, and semantic search implementation issues
Description
Integrate OpenSearch as a new vector database option for the
WhatYouSaidecosystem. OpenSearch is a powerful, distributed, open-source search and analytics suite that supports k-NN (k-Nearest Neighbors) search, making it an excellent candidate for enterprise-grade RAG (Retrieval-Augmented Generation) applications. This integration will provide users with more flexibility in choosing a vector store that meets their scalability and high-availability requirements.Tasks
OPENSEARCH = "opensearch"to theVectorStoreTypeenum insrc/domain/entities/enums/vector_store_type_enum.py.VectorConfiginsrc/config/settings.pyto include OpenSearch configuration fields (host, port, user, password, use_ssl, verify_certs).src/infrastructure/repositories/vector/opensearch/.opensearch_client.pyfor connection management.chunk_repository.pyfollowing theIVectorRepositoryinterface.opensearch-pyto the project dependencies inpyproject.toml.get_vector_repositoryinsrc/presentation/api/dependencies.pyto instantiate the OpenSearch repository when selected.SettingsModal.tsx) to allow selecting OpenSearch and configuring its parameters..env.exampleandREADME.mdwith OpenSearch setup instructions.Additional Context
OpenSearch k-NN search requires specific index settings (e.g., "index.knn": "true"). The implementation should handle index creation with the correct mapping for the chosen embedding model's dimensionality. Reference existing implementations for Weaviate and Chroma for consistency in how metadata and content are stored and retrieved.