In a previous post I showed you how to use Semantic Kernel, Ollama and Qdrant to generate and store vector embeddings. Doing this doesn't make much sense if we don't look at a way to expose and use this data. In this post I'll show you how to query the vector store to search for results.
Remark: If you missed the previous post, go check it out first.
Let’s dive in…
We start by having a look again at the model we were using:
First important thing to notice is that we can decided which properties should be used when querying the vector store. This is useful when we have multiple vectors stored in the data model. If we don’t specify the vector property, the first vector found will be used when querying. (In our example we only have one vector property so in theory we could ignore this).
Let’s do a first search:
Remark: Notice that we need to use the Property name not the name configured in the store or attribute.
Most vector stores also support the concept of filtering. This allows us to provide a filter that will filter the records before applying the vector search. Using filters helps to reduce latency and processing costs.
Let’s add an extra property ‘Tag’ to our model and set the IsFilterable
Property to true
on the VectorStoreRecordData
attribute:
Now we use this property to filter the results first before applying the vector search:
Great! In a next post, we first take a deeper looker look at Qdrant before we continue with a look at the text search feature of Semantic Kernel.
More information
Generate text embeddings with Semantic Kernel and Ollama
Vector search using Semantic Kernel Vector Store connectors (Preview) | Microsoft Learn