Skip to content

Support ISNULL/ISNOTNULL filters and configurable similarity function in MongoDB Atlas Vector Store - #7293

Open
DongJinNam wants to merge 1 commit into
spring-projects:mainfrom
DongJinNam:feat/mongodb-filter-null-similarity
Open

DongJinNam wants to merge 1 commit into
spring-projects:mainfrom
DongJinNam:feat/mongodb-filter-null-similarity

Conversation

@DongJinNam

Copy link
Copy Markdown

Description

This PR enhances the spring-ai-mongodb-atlas-store module by:

  1. Adding support for ISNULL and ISNOTNULL filter expression types in MongoDBAtlasFilterExpressionConverter.
  2. Making the vector index similarity function configurable (COSINE, DOT_PRODUCT, EUCLIDEAN) in MongoDBAtlasVectorStore, instead of being hardcoded to "cosine".

Key Changes

  1. MongoDBAtlasFilterExpressionConverter:

    • Implemented ISNULL conversion to {"metadata.<key>": {$eq: null}}.
    • Implemented ISNOTNULL conversion to {"metadata.<key>": {$ne: null}}.
    • Added unit test cases for single and compound/grouped null filter expressions in MongoDBAtlasFilterConverterTest.
  2. MongoDBAtlasVectorStore:

    • Introduced MongoDBAtlasVectorStore.SimilarityFunction enum supporting "cosine", "dotProduct", and "euclidean".
    • Added similarityFunction(SimilarityFunction) option to MongoDBAtlasVectorStore.Builder (defaults to SimilarityFunction.COSINE).
    • Updated createSearchIndexDefinition() to use the configured similarity function.
    • Added MongoDBAtlasVectorStoreBuilderTest to verify builder defaults and custom configuration.

Verification

  • Tested locally with JDK 25 and Maven Wrapper:
    • MongoDBAtlasFilterConverterTest: 35 tests passed.
    • MongoDBAtlasVectorStoreBuilderTest: 4 tests passed.
    • Checkstyle & spring-javaformat: 0 violations.

… in MongoDB Atlas Vector Store

Signed-off-by: DongJinNam <ehdwls6856@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants