Sign inSign up

0x4139/omnivec

By 0x4139

Updated about 1 year ago

Versatile Embeddings for Smarter AI

Image
0

1.2K

0x4139/omnivec repository overview

OmniVec API - Versatile Embeddings for Smarter AI

Motivation

OmniVec is designed to provide a versatile embedding solution for AI-powered applications. It supports dense embeddings, sparse embeddings, and late interaction embeddings, making it an adaptable tool for search, retrieval, and ranking tasks. With a built-in reranking module, OmniVec enables high-accuracy similarity scoring, improving performance across NLP and machine learning workflows.

Description

OmniVec is a FastAPI-based solution for embedding text and reranking passages using state-of-the-art models. It leverages FlagEmbedding for embedding generation and FlagReranker for similarity computation. The API is designed to be flexible and efficient, making it ideal for large-scale deployments in search engines, recommendation systems, and AI applications.

API Overview

The API exposes the following endpoints:

1. Embedding API
POST /v1/embedding/passages/

Encodes a list of text passages into dense, sparse, and/or late interaction embeddings.

  • Request Body:
    {
      "corpus": ["Example passage 1", "Example passage 2"],
      "batch_size": 128,
      "max_length": 1024,
      "dense": true,
      "sparse": true,
      "late_interaction": false
    }
    
  • Response:
    {
      "dense": [[...], [...]],
      "sparse": [{...}, {...}],
      "late": [[[...]], [[...]]]
    }
    
POST /v1/embedding/queries/

Encodes a list of queries into dense, sparse, and/or late interaction embeddings.

  • Request Body: Same as POST /v1/embedding/passages/
  • Response: Same as POST /v1/embedding/passages/
2. Reranking API
POST /v1/reranking/compute

Computes similarity scores between a query and a list of passages.

  • Request Body:
    {
      "query": "Example query",
      "passages": ["Passage 1", "Passage 2"],
      "batch_size": 128,
      "max_length": 1024,
      "normalize": true
    }
    
  • Response:
    {
      "scores": [0.85, 0.72]
    }
    

Running with Docker

To quickly start OmniVec using Docker, run the following command:

docker volume create omnivec
docker run --gpus all -p 8000:8000 -v omnivec:/app/cache 0x4139/omnivec

Once the container is running, you can access the Open API documentation at: http://localhost:8000/docs

Environment Variables

The following environment variables can be customized:

Embedding Model Configurations
VariableDescriptionDefault
EMBEDDING_MODEL_MODEL_NAMEModel used for generating embeddingsBAAI/bge-m3
EMBEDDING_MODEL_NORMALIZE_EMBEDDINGSWhether to normalize embeddingstrue
EMBEDDING_MODEL_USE_FP16Use FP16 for performance optimizationtrue
EMBEDDING_MODEL_QUERY_INSTRUCTION_FOR_RETRIEVALQuery instruction formatnull
EMBEDDING_MODEL_QUERY_INSTRUCTION_FORMATQuery instruction template{}{}"
EMBEDDING_MODEL_INFERENCE_DEVICESDevices for inference (e.g., CPU/GPU)cuda:0
EMBEDDING_MODEL_POOLING_METHODPooling method for embeddingcls
EMBEDDING_MODEL_CACHE_DIRDirectory for caching model weights./cache
EMBEDDING_MODEL_BATCH_SIZEBatch size for embedding generation128
EMBEDDING_MODEL_QUERY_MAX_LENGTHMax token length for queries1024
EMBEDDING_MODEL_PASSAGE_MAX_LENGTHMax token length for passages1024
EMBEDDING_MODEL_RETURN_DENSEWhether to return dense embeddingstrue
EMBEDDING_MODEL_RETURN_SPARSEWhether to return sparse embeddingstrue
EMBEDDING_MODEL_RETURN_COLBERT_VECSWhether to return ColBERT vectors (late interaction)false
Reranker Model Configurations
VariableDescriptionDefault
RERANKER_MODEL_NAME_OR_PATHModel used for rerankingBAAI/bge-reranker-v2-m3
RERANKER_USE_FP16Use FP16 for optimizationfalse
RERANKER_QUERY_INSTRUCTION_FOR_RERANKQuery instruction for rerankingnull
RERANKER_QUERY_INSTRUCTION_FORMATQuery instruction template{}{}"
RERANKER_PASSAGE_INSTRUCTION_FOR_RERANKPassage instruction for rerankingnull
RERANKER_PASSAGE_INSTRUCTION_FORMATPassage instruction template{}{}"
RERANKER_BATCH_SIZEBatch size for reranking128
RERANKER_QUERY_MAX_LENGTHMax token length for queries1024
RERANKER_MAX_LENGTHMax token length for passages1024
RERANKER_NORMALIZENormalize similarity scorestrue

License

OmniVec is released under the MIT License.

Tag summary

Content type

Image

Digest

sha256:32c8f2e1e

Size

5.1 GB

Last updated

about 1 year ago

docker pull 0x4139/omnivec