EF does not currently have a unified vector search story: vector search is implemented separately for each provider, exposing provider-specific search functions. While this allows exposing each database's exact support, there may be value in a common/unified experience, much like how we try to capture other common database functionality in relational and core. At this point most databases have some sort of vector search story (it's practically universal), and we have enough examples to try to triangulate a unified thing. Microsoft.Extension.VectorData (MEVD) also showed that it's possible to successfully abstract over the different databases, and EF should do the same.
Overall design (all in core):
- Metadata support for defining vector columns, similarity functions and vector search indexes. Support the standard similarity functions and index types out of the box, but allow extensibility too (see the MEVD example).
- Unified querying capability over vectors in core (so for all providers)
- Make sure we allow projecting out the similarity scores in some way.
Also keep full text search in mind, and hybrid.
Note: this would ideally also include EF taking care of embedding generation (#34387), so that users can have simple e.g. properties that EF automatically generates as embeddings.
EF does not currently have a unified vector search story: vector search is implemented separately for each provider, exposing provider-specific search functions. While this allows exposing each database's exact support, there may be value in a common/unified experience, much like how we try to capture other common database functionality in relational and core. At this point most databases have some sort of vector search story (it's practically universal), and we have enough examples to try to triangulate a unified thing. Microsoft.Extension.VectorData (MEVD) also showed that it's possible to successfully abstract over the different databases, and EF should do the same.
Overall design (all in core):
Also keep full text search in mind, and hybrid.
Note: this would ideally also include EF taking care of embedding generation (#34387), so that users can have simple e.g. properties that EF automatically generates as embeddings.