langchain/docs
AthulVincent 67c55cb5b0
Implemented MongoDB Atlas Self-Query Retriever (#13321)
# Description 
This PR implements Self-Query Retriever for MongoDB Atlas vector store.

I've implemented the comparators and operators that are supported by
MongoDB Atlas vector store according to the section titled "Atlas Vector
Search Pre-Filter" from
https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/.

Namely:
```
allowed_comparators = [
      Comparator.EQ,
      Comparator.NE,
      Comparator.GT,
      Comparator.GTE,
      Comparator.LT,
      Comparator.LTE,
      Comparator.IN,
      Comparator.NIN,
  ]

"""Subset of allowed logical operators."""
allowed_operators = [
    Operator.AND,
    Operator.OR
]
```
Translations from comparators/operators to MongoDB Atlas filter
operators(you can find the syntax in the "Atlas Vector Search
Pre-Filter" section from the previous link) are done using the following
dictionary:
```
map_dict = {
            Operator.AND: "$and",
            Operator.OR: "$or",
            Comparator.EQ: "$eq",
            Comparator.NE: "$ne",
            Comparator.GTE: "$gte",
            Comparator.LTE: "$lte",
            Comparator.LT: "$lt",
            Comparator.GT: "$gt",
            Comparator.IN: "$in",
            Comparator.NIN: "$nin",
        }
```

In visit_structured_query() the filters are passed as "pre_filter" and
not "filter" as in the MongoDB link above since langchain's
implementation of MongoDB atlas vector
store(libs\langchain\langchain\vectorstores\mongodb_atlas.py) in
_similarity_search_with_score() sets the "filter" key to have the value
of the "pre_filter" argument.
```
params["filter"] = pre_filter
```
Test cases and documentation have also been added.

# Issue
#11616 

# Dependencies
No new dependencies have been added.

# Documentation
I have created the notebook mongodb_atlas_self_query.ipynb outlining the
steps to get the self-query mechanism working.

I worked closely with [@Farhan-Faisal](https://github.com/Farhan-Faisal)
on this PR.

---------

Co-authored-by: Bagatur <baskaryan@gmail.com>
2023-11-29 22:05:06 -05:00
..
api_reference DOCS: core editable dep api refs (#13747) 2023-11-22 14:33:30 -08:00
docs Implemented MongoDB Atlas Self-Query Retriever (#13321) 2023-11-29 22:05:06 -05:00
scripts DOCS: format notebooks (#13371) 2023-11-14 14:17:44 -08:00
src add cookbook table (#12043) 2023-10-19 14:05:24 -07:00
static docs[patch]: update stack diagram (#13902) 2023-11-28 14:19:13 -08:00
.local_build.sh Harrison/docs smith serve (#12898) 2023-11-06 07:07:25 -08:00
babel.config.js Restructure docs (#11620) 2023-10-10 12:55:19 -07:00
code-block-loader.js Restructure docs (#11620) 2023-10-10 12:55:19 -07:00
docusaurus.config.js docs[patch]: link to LangSmith docs (#13740) 2023-11-28 16:44:45 -08:00
package-lock.json Upgrade docs postcss (#13031) 2023-11-07 15:50:25 -08:00
package.json Restructure docs (#11620) 2023-10-10 12:55:19 -07:00
README.md Fix typos (#11663) 2023-10-12 11:44:03 -04:00
settings.ini Restructure docs (#11620) 2023-10-10 12:55:19 -07:00
sidebars.js DOCS: move adapters to integrations (#13862) 2023-11-27 13:05:43 -08:00
vercel_build.sh template readme's in docs (#13152) 2023-11-09 23:36:21 -08:00
vercel_requirements.txt docs[patch]: install local core (#13990) 2023-11-28 14:36:22 -08:00
vercel.json renamed google_vertex_ai_vector_search notebook (#13484) 2023-11-28 16:58:29 -08:00

Website

This website is built using Docusaurus 2, a modern static website generator.

Installation

$ yarn

Local Development

$ yarn start

This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.

Build

$ yarn build

This command generates static content into the build directory and can be served using any static contents hosting service.

Deployment

Using SSH:

$ USE_SSH=true yarn deploy

Not using SSH:

$ GIT_USER=<Your GitHub username> yarn deploy

If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the gh-pages branch.

Continuous Integration

Some common defaults for linting/formatting have been set for you. If you integrate your project with an open-source Continuous Integration system (e.g. Travis CI, CircleCI), you may check for issues using the following command.

$ yarn ci