Skip to content
SIE

Overview

SIE provides three integration paths: native SDK for full feature access, framework adapters for RAG pipelines, and OpenAI compatibility for drop-in migration.

OptionFeaturesBest For
Framework AdaptersDense, sparse, reranking, extractionLangChain, LlamaIndex, Haystack, DSPy, CrewAI, Chroma
Native SDKAll features, full controlCustom pipelines, advanced use cases
OpenAI CompatibilityDense onlyMigrating existing OpenAI code

SIE provides native packages for six frameworks. Each adapter exposes embeddings, and most include reranking support.

FrameworkPackageEmbeddingsSparseReranking
LangChainsie-langchainYesYesYes
LlamaIndexsie-llamaindexYesYesYes
Haystacksie-haystackYesYesNo
DSPysie-dspyYesNoNo
CrewAIsie-crewaiNoYesNo
Chromasie-chromaYesYesNo

Use framework adapters when:

  • You’re building a RAG pipeline with one of these frameworks
  • You need sparse embeddings for hybrid search
  • You need reranking to improve retrieval quality

The native SDK provides full access to all SIE features: dense, sparse, multi-vector embeddings, reranking, and entity extraction.

Terminal window
pip install sie-sdk
from sie_sdk import SIEClient
from sie_sdk.types import Item
client = SIEClient("http://localhost:8080")
# All output types
result = client.encode(
"BAAI/bge-m3",
Item(text="Your text"),
output_types=["dense", "sparse", "multivector"]
)
# Reranking
scores = client.score(
"BAAI/bge-reranker-v2-m3",
query=Item(text="What is AI?"),
items=[Item(text="AI is..."), Item(text="Weather is...")]
)
# Entity extraction
entities = client.extract(
"urchade/gliner_multi-v2.1",
Item(text="Tim Cook leads Apple."),
labels=["person", "organization"]
)

Use the native SDK when:

  • You’re building a custom pipeline without a framework
  • You need multi-vector (ColBERT) output
  • You need entity extraction
  • You want fine-grained control over batching and timing

SIE exposes /v1/embeddings matching OpenAI’s API format. Existing OpenAI code works with a URL change.

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")

Use OpenAI compatibility when:

  • You have existing code using the OpenAI SDK
  • You only need dense embeddings
  • You want zero code changes beyond the URL

Limitations: Only dense embeddings. No sparse, multi-vector, reranking, or extraction.


FeatureFramework AdaptersNative SDKOpenAI Compat
Dense embeddingsYesYesYes
Sparse embeddingsMostYesNo
Multi-vector (ColBERT)NoYesNo
RerankingLangChain, LlamaIndexYesNo
Entity extractionNoYesNo

  • LangChain - embeddings and reranking for LangChain
  • LlamaIndex - embeddings and reranking for LlamaIndex
  • Haystack - dense and sparse embedders
  • DSPy - embedder for DSPy retrievers
  • CrewAI - sparse embeddings for hybrid search
  • Chroma - embedding functions for ChromaDB
  • SDK Reference - full SDK documentation