Repository navigation
feat(ai): implement vector similarity search with spring ai and pgvector - #389
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Adds a new tutorial module,
ai-pgvector, demonstrating how to implement semantic vector similarity search in Spring Boot using Spring AI and PostgreSQL'spgvectorextension.Motivation & Architecture
Rather than introducing a dedicated, standalone vector database that complicates deployment and data synchronization,
pgvectorbrings vector embeddings directly into PostgreSQL. This preserves ACID guarantees, simplifies backups and migrations, and allows combining semantic similarity search with relational filters.Key Changes
ai-pgvectorsubmodule tosettings.gradle.ktsand rootREADME.adoc.build.gradle.ktswithspring-ai-starter-vector-store-pgvector, PostgreSQL driver, and Testcontainers dependencies.zin.rashidi.boot.ai.pgvector):DocumentItem: Domain record for ingesting text content and metadata attributes.SemanticSearchService: Encapsulates document ingestion and similarity search using Spring AI'sVectorStoreandSearchRequest.HNSWindex andCOSINE_DISTANCEmetric inapplication.properties.TestcontainersConfiguration: Configured an ephemeralpgvector/pgvector:pg16container using@ServiceConnection.SemanticSearchIntegrationTests: Implemented a deterministic, keyword-aware in-memoryEmbeddingModelto ensure tests run hermetically in CI without external LLM API keys or network latency.ai-pgvector/README.adoc.Verification