Memoire is a text search/RAG solution. It handles for you all the details of making a good document retrieval so you can focus on building your app (and delight your users).
We are not open source yet. We have our own source-available license you can read here, the TLDR is:
You will need to use docker, the easiest will be to copy and paste our docker-compose
Memoire is written using typescript and run on a single core. We tried and tested and it can load around 100k documents on 1Gb of ram when using 768 dimensions. The docker compose has been set to limit the resources to 1 core and 1Gb of ram, so you can see how your dataset uses the container.
To work, the container require a few environment variables:
mandatory:
API_KEY
: this will be used to communicate with Memoire. Make it secure (ex: use openssl rand -hex 32
). The API_KEY needs to be present in the requests headers:curl http://localhost:3003/endpoint -H "Authorization: Bearer my_API_KEY"
optional:
SHOW_DOC=true
: enable the documentation endpoint and pretty-print logs.EMBEDDING_MODEL
: the embedding model you want to use, leave empty to use a CPU, local modelAWS_SECRET_ACCESS_KEY
: if you are using bedrock (see our tutorial here to get it)AWS_ACCESS_KEY_ID
: if you are using bedrock (see our tutorial here to get it)AWS_REGION
: if you are using bedrock (see our tutorial here to get it)OPENAI_KEY
: if you are using OpenAI models (Azure or not)OPENAI_DEPLOYMENT
: if you are using Azure open AI models (leave empty to use OpenAI's servers)You can either read the documentation using the environment variable SHOW_DOC, or read it online here
You are welcome to contribute to the repository, just look for open issues.
If you are facing issues with Memoire, depending on which plan you have:
undefined Message: Invalid URL
" -> make sure your environment variable in docker has no space and no quotes.Error code: undefined Message: EACCES: permission denied, mkdir '.memoire/sources'
-> This is a linux permission issue. In the cloud -> make sure the volume attached has the user node:node; In docker compose, you can add user: 1001:1001