language: en
license: mit
tags:
  - medical
  - sentence-transformers
  - text-embedding
  - sentence-similarity
  - onnx
  - semantic-search
  - opensearch
  - healthcare
  - medical-embeddings
datasets:
  - abhinand/MedEmbed-corpus
metrics:
  - cosine-similarity
library_name: sentence-transformers
pipeline_tag: sentence-similarity
model-index:
  - name: MedEmbed-large-v0.1-onnx
    results:
      - task:
          type: Sentence Similarity
          name: Semantic Retrieval
        dataset:
          type: abhinand/MedEmbed-corpus
          name: MedEmbed corpus
        metrics:
          - type: cosine-similarity
            value: N/A
base_model: abhinand/MedEmbed-Large-v0.1
inference: true
MedEmbed-large-v0.1 ONNX Model
This repository contains an ONNX version of the MedEmbed-large-v0.1 model, which was originally a SentenceTransformer model.
Model Description
The original MedEmbed-large-v0.1 model is a sentence embedding model specialized for medical text. This ONNX version maintains the same functionality but is optimized for deployment in production environments.
This model is a derivative of abhinand/MedEmbed-Large-v0.1, which itself is a fine-tune of abhinand/MedEmbed-base-v0.1.
ONNX Conversion
The model was converted to ONNX format using PyTorch's torch.onnx.export functionality with ONNX opset version 14.
Model Inputs and Outputs
- Inputs: - input_ids: Tensor of shape- [batch_size, sequence_length]
- attention_mask: Tensor of shape- [batch_size, sequence_length]
 
- Output: - sentence_embedding: Tensor of shape- [batch_size, embedding_dimension]
 
Usage with Hugging Face
import onnxruntime as ort
from transformers import AutoTokenizer
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained("YOUR_MODEL_PATH")
# Load ONNX model
onnx_path = "YOUR_MODEL_PATH/MedEmbed-large-v0.1.onnx"
session = ort.InferenceSession(onnx_path)
# Tokenize input text
text = "Your medical text here"
inputs = tokenizer(text, return_tensors="np", padding=True, truncation=True)
# Run inference with ONNX model
onnx_inputs = {
    "input_ids": inputs["input_ids"],
    "attention_mask": inputs["attention_mask"]
}
embeddings = session.run(None, onnx_inputs)[0]
Usage with OpenSearch
This model can be integrated with OpenSearch for neural search capabilities. Here's how to set it up:
1. Upload the model to OpenSearch
# Create a zip file containing your model files
zip -r medembedlarge.zip MedEmbed-large-v0.1.onnx config.json tokenizer_config.json tokenizer.json vocab.txt special_tokens_map.json
# Upload the model using the OpenSearch REST API
curl -XPUT "https://your-opensearch-endpoint/_plugins/_ml/models/medembedlarge" \
     -H "Content-Type: application/json" \
     -d '{
       "name": "medembedlarge",
       "version": "1.0.0",
       "model_format": "ONNX",
       "model_config": {
         "model_type": "bert",
         "embedding_dimension": 768,
         "framework_type": "sentence_transformers"
       }
     }' -u "admin:admin"
# Upload the model file
curl -XPOST "https://your-opensearch-endpoint/_plugins/_ml/models/medembedlarge/_upload" \
     -H "Content-Type: multipart/form-data" \
     -F "[email protected]" -u "admin:admin"
2. Deploy the model
curl -XPOST "https://your-opensearch-endpoint/_plugins/_ml/models/medembedlarge/_deploy" \
     -H "Content-Type: application/json" -u "admin:admin"
3. Create a neural search pipeline
curl -XPUT "https://your-opensearch-endpoint/_plugins/_ml/pipelines/medembedlarge-pipeline" \
     -H "Content-Type: application/json" \
     -d '{
       "description": "Neural search pipeline for medical text",
       "processors": [
         {
           "text_embedding": {
             "model_id": "medembedlarge",
             "field_map": {
               "text_field": "text_embedding"
             }
           }
         }
       ]
     }' -u "admin:admin"
4. Create an index with embedding field
curl -XPUT "https://your-opensearch-endpoint/medical-documents" \
     -H "Content-Type: application/json" \
     -d '{
       "settings": {
         "index.plugins.search_pipeline.default": "medembedlarge-pipeline"
       },
       "mappings": {
         "properties": {
           "text_field": {
             "type": "text"
           },
           "text_embedding": {
             "type": "knn_vector",
             "dimension": 768,
             "method": {
               "name": "hnsw",
               "space_type": "cosinesimil",
               "engine": "nmslib"
             }
           }
         }
       }
     }' -u "admin:admin"
5. Index documents with the neural search pipeline
curl -XPOST "https://your-opensearch-endpoint/medical-documents/_doc" \
     -H "Content-Type: application/json" \
     -d '{
       "text_field": "Patient presented with symptoms of hypertension and diabetes."
     }' -u "admin:admin"
6. Perform a neural search query
curl -XPOST "https://your-opensearch-endpoint/medical-documents/_search" \
     -H "Content-Type: application/json" \
     -d '{
       "query": {
         "neural": {
           "text_embedding": {
             "query_text": "hypertension treatment options",
             "model_id": "medembedlarge",
             "k": 10
           }
         }
       }
     }' -u "admin:admin"
Note: Replace "https://your-opensearch-endpoint" with your actual OpenSearch endpoint, and adjust authentication credentials as needed for your environment.