How to integrate SIE with your existing stack
SIE provides three integration paths depending on how you are building. Framework adapters plug SIE into existing RAG pipelines with minimal code. The native SDK gives you full access to every feature. OpenAI compatibility lets you point existing OpenAI code at SIE with a single URL change.
| Option | Best for |
|---|---|
| Framework adapters | LangChain, LlamaIndex, Haystack, Qdrant, Weaviate, Chroma, LanceDB, DSPy, CrewAI |
| Native SDK | Custom pipelines, multi-vector output, full extraction support |
| OpenAI compatibility | Migrating existing OpenAI embeddings or chat code |
Which Integration Path Should I Use?
Section titled “Which Integration Path Should I Use?”Use the summary table and anchor links above to jump to framework adapters, the native SDK, or OpenAI compatibility.
Framework Adapters
Section titled “Framework Adapters”SIE provides dedicated packages for all major Python AI frameworks and vector stores, plus four TypeScript packages.
Python
Section titled “Python”| Framework | Package | Embeddings | Sparse | Multivector | Reranking | Extraction | Multimodal |
|---|---|---|---|---|---|---|---|
| Chroma | sie-chroma | Yes | Yes | No | No | No | No |
| CrewAI | sie-crewai | No | Yes | No | Yes | Yes | No |
| DSPy | sie-dspy | Yes | Yes | No | Yes | Yes | No |
| Haystack | sie-haystack | Yes | Yes | Yes | Yes | Yes | Yes |
| LanceDB | sie-lancedb | Yes | No | No | Yes | Yes | No |
| LangChain | sie-langchain | Yes | Yes | No | Yes | Yes | No |
| LlamaIndex | sie-llamaindex | Yes | Yes | No | Yes | Yes | Yes |
| Qdrant | sie-qdrant | Yes | Yes | Yes | No | No | No |
| Weaviate | sie-weaviate | Yes | Yes | Yes | No | No | No |
TypeScript
Section titled “TypeScript”| Framework | Package | Embeddings | Sparse | Multivector | Reranking | Extraction |
|---|---|---|---|---|---|---|
| Chroma | @superlinked/sie-chroma | Yes | Yes | No | No | No |
| LanceDB | @superlinked/sie-lancedb | Yes | No | No | Yes | No |
| LangChain.js | @superlinked/sie-langchain | Yes | Yes | No | Yes | Yes |
| LlamaIndex.ts | @superlinked/sie-llamaindex | Yes | Yes | No | Yes | Yes |
Use a framework adapter when:
- You are building a RAG pipeline with one of these frameworks
- You need sparse embeddings for hybrid search
- You need reranking to improve retrieval quality
For features marked “No” in the table above, you can use the native SDK alongside your framework integration. See each integration’s page for examples.
Native SDK
Section titled “Native SDK”The native SDK gives you full access to all SIE features: dense, sparse, and multi-vector embeddings, reranking, and extraction (entities, relations, classifications, object detection).
pip install sie-sdk# orpnpm add @superlinked/sie-sdkfrom sie_sdk import SIEClientfrom sie_sdk.types import Item
client = SIEClient("http://localhost:8080")
# All output types from one modelresult = client.encode( "BAAI/bge-m3", Item(text="Your text"), output_types=["dense", "sparse", "multivector"])
# Rerankingscores = client.score( "BAAI/bge-reranker-v2-m3", query=Item(text="What is AI?"), items=[Item(text="AI is..."), Item(text="Weather is...")])
# Entity extractionentities = client.extract( "urchade/gliner_multi-v2.1", Item(text="Tim Cook leads Apple."), labels=["person", "organization"])import { SIEClient } from "@superlinked/sie-sdk";
const client = new SIEClient("http://localhost:8080");
// All output types from one modelconst result = await client.encode( "BAAI/bge-m3", { text: "Your text" }, { outputTypes: ["dense", "sparse", "multivector"] },);
// Rerankingconst scores = await client.score( "BAAI/bge-reranker-v2-m3", { text: "What is AI?" }, [{ text: "AI is..." }, { text: "Weather is..." }],);
// Entity extractionconst entities = await client.extract( "urchade/gliner_multi-v2.1", { text: "Tim Cook leads Apple." }, { labels: ["person", "organization"] },);
await client.close();Use the native SDK when:
- You are building a custom pipeline without a framework
- You need multi-vector (ColBERT) output
- You need extraction (entities, relations, classifications, object detection)
- You want fine-grained control over batching and timing
OpenAI Compatibility
Section titled “OpenAI Compatibility”SIE speaks the OpenAI API for both embeddings and generation. /v1/embeddings and /v1/chat/completions are drop-in: existing OpenAI code works with a single URL change and no other modifications. The gateway also serves /v1/completions (non-streaming) and /v1/responses (string input, non-streaming) for the common cases:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8080/v1", api_key="not-needed")
response = client.embeddings.create( model="BAAI/bge-m3", input=["Your text here", "Another text"])for item in response.data: print(f"Index {item.index}: {len(item.embedding)} dimensions")
reply = client.chat.completions.create( model="Qwen/Qwen3-4B-Instruct-2507", messages=[{"role": "user", "content": "Reply with one word: the capital of France."}],)print(reply.choices[0].message.content)Where each endpoint is served: /v1/embeddings is available on every SIE server, single-node or cluster. /v1/chat/completions, /v1/completions, and /v1/responses are served by the cluster gateway against generation models (the sglang bundle). On a single-node Apple Silicon server, /v1/chat/completions also works against the local MLX generation backend.
Use OpenAI compatibility when:
- You have existing code using the OpenAI SDK
- You need dense embeddings or chat completions
- You want zero code changes beyond the URL
Limitations: Sparse, multi-vector, reranking, and extraction are not part of the OpenAI API shape; they require the native SDK or a framework adapter.
Full Feature Comparison
Section titled “Full Feature Comparison”| Feature | Framework adapters | Native SDK | OpenAI compat |
|---|---|---|---|
| Dense embeddings | All | Yes | Yes |
| Chat / text generation | No | Yes | Yes (gateway) |
| Sparse embeddings | Most | Yes | No |
| Multi-vector (ColBERT) | Haystack, Qdrant, Weaviate | Yes | No |
| Reranking | Haystack, LangChain, LlamaIndex, LanceDB | Yes | No |
| Extraction (NER, relations, classification, vision) | Haystack, LangChain, LlamaIndex, LanceDB, CrewAI, DSPy | Yes | No |
Frequently Asked Questions
Section titled “Frequently Asked Questions”Does SIE work with Qdrant?
Yes. Install sie-qdrant for dense and sparse embedding support with Qdrant. See the Qdrant integration guide.
Can I use SIE as a drop-in replacement for OpenAI?
Yes, for dense embeddings and chat completions. Change your base URL to your SIE server and set any string as the API key. The response format matches OpenAI’s exactly. The gateway also serves /v1/completions and /v1/responses, currently non-streaming. See OpenAI compatibility above.
Which integration supports the most features?
sie-haystack and sie-llamaindex support the most features, including embeddings, sparse, reranking, extraction, and multimodal. See the full feature table above.
Where can I find setup instructions for each framework? Each framework has its own dedicated page. See Chroma, LangChain, LlamaIndex, Haystack, Qdrant, Weaviate, LanceDB, DSPy, and CrewAI.