semantic-kernel
semantic-kernel copied to clipboard
.Net: Create ADR for the updated Memory Connector design
Tasks
- [ ] Create ADR
- [ ] Azure AI Search POC
- [ ] Redis POC
- [ ] Weaviate POC
Context and Problem Statement
Semantic Kernel has a collection of connectors to popular Vector databases e.g. Azure AI Search, Chroma, Milvus, ... Each Memory connector implements a memory abstraction defined by Semantic Kernel and allows developers to easily intergrate Vector databases into their applications. The current abstractions are experimental and the purpose of this ADR is to progress the design of the abstractions so that they can graduate to non experimental status.
Decision Drivers
- API surface must be easy to use and intuitive
- Alignment with other patterns in the SK
- Design must allow Memory Plugins to be easily instantiated with any connector
- Design must support all Kernel content types
- Design must allow for database specific configuration
- All NFR's to be production ready are implemented
- Basic CRUD operations must be supported so that connectors can be used in a polymorphic manner
- Official Database Clients must be used where available
- Dynamic database schema must be supported
- Dependency injection must be supported
- Azure-ML YAML format must be supported
- Breaking glass scenarios must be supported
Questions
- Primary use cases are described in the RAG document.
- Prioritised list of Memory connectors
- P1: Azure AI Search, Weaviate, Redis
- P2: Cosmos dB, Kusto, SQL Server, LlamaIndex*
- P3: Milvus, Pinecone, Chroma
- Remove database that do not support vector similarity search
- For LlamaIndex this is an integration story with their service offering
Resources
- https://github.com/microsoft/kernel-memory
- https://github.com/microsoft/semantic-kernel/issues?q=is%3Aopen+is%3Aissue+label%3A%22memory+connector%22
- LlamIndex, LangChain, Haystack