The Kladde’s help is cut, read in and searchable. Except that the store forgets everything as soon as the Kladde ends, and every start embeds all sections again. In this lesson, the index moves into PostgreSQL with the extension pgvector, locally in a container. The search code stays unchanged; that is the proof that the interface from lesson 2 holds up. After that, you get to know two more stores, Azure AI Search as a managed service and SQL Server 2025, and choose with reasons.
| Package | Version |
|---|---|
CommunityToolkit.VectorData.PgVector (brings Npgsql and Pgvector along) |
1.0.2 |
Aspire.Hosting.PostgreSQL (in the app host) |
13.6.4 |
Testcontainers.PostgreSql (third party, MIT license) |
4.16.0 |
CommunityToolkit.VectorData.AzureAISearch (cloud part only) |
1.0.1 |
CommunityToolkit.VectorData.SqlServer (overview only) |
1.0.1 |
xunit.v3.mtp-v2 |
4.0.2 |
For this lesson, you need Docker Desktop or Podman as in K2. The container image is pgvector/pgvector:pg17: PostgreSQL 17 with the
extension already built in. In a real project, you also pin the version of pgvector in the tag; the image’s page names it.
Three ways for the Kladde
| PostgreSQL with pgvector | Azure AI Search | SQL Server 2025 | |
|---|---|---|---|
| What it is | an extension of the database: type vector, distances, indexes |
a managed search service with full text, vectors and semantic ranking | the type vector and the function VECTOR_DISTANCE in the database from K2 |
| Locally | container, free | only in Azure | container from K2 |
| In Azure | Azure Database for PostgreSQL | the service itself, also as the Free tier | Azure SQL Database |
| Index | HNSW, up to 2,000 dimensions | HNSW, up to 4,096 dimensions | exact search; a vector index (DiskANN) is in preview in SQL Server 2025 |
| Hybrid search with full text (T5.4) | yes | yes, plus semantic ranking (a free quota per month, on the Free tier only in some regions; more from the Basic tier) | yes, with a full-text index of the database |
| Costs | computing time and storage of the server | tier and number of units, not per request | computing time of the database |
A lot speaks for PostgreSQL for the Kladde: It runs locally without a subscription, has a real index and full text for T5.4, and the index
is a small database of its own that can be rebuilt from the Markdown files at any time. You write down the reasoning at the end in
docs/vector-store.md.