Memista is a high-performance vector search service written in Rust that provides a simple HTTP API for storing and retrieving text chunks with their associated vector embeddings. It combines SQLite for metadata storage with USearch for efficient vector similarity search.
Insert text chunks with their embeddings into a specified database.
Search for similar chunks using vector embeddings.
Drop a specific database and its associated vector index.
The service can be configured using environment variables:
DATABASE_PATH: Path to SQLite database file (default: "memista.db")SERVER_HOST: Host address to bind to (default: "127.0.0.1")SERVER_PORT: Port to listen on (default: 8083)LOG_LEVEL: Logging level (default: "info").env file with your configuration (optional)cargo runThe server will start and the API documentation will be available at:
curl -X POST http://localhost:8083/v1/insert
-H "Content-Type: application/json"
-d '{
"database_id": "my_db",
"chunks": [{
"embedding": [0.1, 0.2],
"text": "Sample text",
"metadata": "{"source": "document1"}"
}]
}'curl -X POST http://localhost:8083/v1/search
-H "Content-Type: application/json"
-d '{
"database_id": "my_db",
"embeddings": [[0.1, 0.2]],
"num_results": 5
}'The project uses several key dependencies:
For a complete list of dependencies, see the Cargo.toml file.
This project is licensed under the GNU General Public License v3.0 (GPL-3.0) - see below for a summary:
GNU General Public License v3.0 (GPL-3.0)
Permissions:
Conditions:
Limitations:
For the full license text, see LICENSE or visit https://www.gnu.org/licenses/gpl-3.0.en.html