Open in the interactive docs · markdown for agents: https://neuraldeep.tech/docs/vector.md
Vectorization · Embeddings
OpenAI-compatible /v1/embeddings. Accepts a string or an array of strings. The vector size depends on the model: 1024 for e5-large and bge-m3, larger for the others; the exact number is the length of embedding in the response.
curl https://api.neuraldeep.tech/v1/embeddings \
-H "Authorization: Bearer $YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"e5-large","input":"hello world"}'
curl https://api.neuraldeep.tech/v1/embeddings \
-H "Authorization: Bearer $YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"bge-m3","input":["text 1","text 2","text 3"]}'
from openai import OpenAI
client = OpenAI(api_key="$YOUR_KEY", base_url="https://api.neuraldeep.tech/v1")
texts = ["first document", "second", "third"]
r = client.embeddings.create(model="bge-m3", input=texts)
vectors = [e.embedding for e in r.data] # list[list[float]], dim=1024 for bge-m3
For RAG —
e5-largefor queries/docs with the "query: " / "passage: " prefix. For accuracy —bge-m3(longer context).
Some models require prefixes. The server does not add them, the client writes them at the start of each text. Without a prefix you still get vectors, but retrieval on them is several times worse.
| model | query | document |
|---|---|---|
frida |
search_query: … |
search_document: … |
e5-large |
query: … |
passage: … |
qwen3-embedding-4b, qwen3-embedding-8b |
Instruct: <task>\nQuery: … |
no prefix |
frida has other modes too: paraphrase: for similarity and dedup, categorize: for classification, categorize_sentiment: and categorize_topic: for sentiment and topics.
curl https://api.neuraldeep.tech/v1/embeddings \
-H "Authorization: Bearer $YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"frida","input":["search_query: how do I get a refund","search_document: Refunds are requested in your account within 14 days"]}'
Input limits.
- All text in one request, summed over every
inputitem, up to 105,600 characters (about 32,000 tokens). Beyond that:400with theX-Window: vector-payloadheader; split it into several requests. There is no separate cap on the number of items in the array. - Keep each text within the model window:
frida512 tokens,giga-embeddings4096,bge-m3andqwen3-embedding-8b8192,jina-embeddings-v4andqwen3-embedding-4b32,768. - Embeddings and rerank have their own concurrency, separate from chat. Beyond it:
429withX-Window: vector-inflightandRetry-After. Quotas are separate too; the remainder is in thevectorblock ofGET /v1/limits.
Reference sections (markdown for agents)
- Start · key, errors, quotas
- Text · chat
- Vectorization
- Reranking
- Transcription
- Image recognition
- Structured output
- Clients · agents
- Remaining limits · Limits API
- Search · Search API
- OCR · documents
- Images · Image API
- Music · Music API
- PII anonymization · PII Guard
- SpeechCore · STT
- Speech synthesis · TTS API
- Who spoke when · diarization
- Text decisions · FRIDA-Decisions, clef-flash
- Drift · overview
- Files + sandbox preview
- Your own tools, skills, MCP
- Tasks · proactive
- Memory · memory
- Isolation and security
- Agent settings
- Limits · errors
- Book · search and MCP
- Streaming
- SDK · Python / JS
- Privacy