Mixedbread

Langchain

Transform your LangChain applications with Mixedbread's AI-native search platform. Seamlessly integrate multimodal semantic understanding, state-of-the-art embeddings, and intelligent reranking into your LangChain chains and LCEL workflows.

Quick Start

  1. Install the package:
Installation
pip install mixedbread-ai-langchain
  1. Save your API key to an environment variable:
MXBAI_API_KEY=your_api_key_here

Components

This integration provides four LangChain-compatible components for building advanced RAG chains:

  • Embeddings: Transform text into semantic vectors using state-of-the-art models, compatible with all LangChain vector stores and retrieval chains
  • Reranker: Enhance retrieval quality by semantically reordering documents in your RAG pipelines, seamlessly integrating with LangChain's document transformers
  • DocumentLoader: Parse multimodal documents (PDF, PPTX, HTML) with layout-aware intelligence, returning structured LangChain Document objects
  • VectorStoreRetriever: Query Mixedbread's managed vector stores directly within your LangChain retrieval chains and LCEL expressions

Embeddings

Generate text embeddings for queries and documents:

from mixedbread_ai_langchain import MixedbreadEmbeddings

print("=== Basic Embedding Usage ===")

embeddings = MixedbreadEmbeddings(
    model="mixedbread-ai/mxbai-embed-large-v1",
    # api_key="your-api-key"  # or set MXBAI_API_KEY env var
)

query = "What is machine learning?"
query_embedding = embeddings.embed_query(query)
print(f"Embedding dimension: {len(query_embedding)}")
print(f"First 5 values: {query_embedding[:5]}")

documents = [
    "Machine learning is a subset of artificial intelligence.",
    "Deep learning uses neural networks with multiple layers.",
    "Natural language processing helps computers understand text.",
]

doc_embeddings = embeddings.embed_documents(documents)
print(f"Embedded {len(doc_embeddings)} documents")
for i, doc in enumerate(documents):
    print(f"Doc {i+1}: {doc[:50]}...")
    print(f"Embedding dimension: {len(doc_embeddings[i])}")

Reranker

Rerank documents based on query relevance:

from langchain_core.documents import Document
from mixedbread_ai_langchain import MixedbreadReranker

print("=== Basic Reranking Usage ===")

reranker = MixedbreadReranker(
    model="mixedbread-ai/mxbai-rerank-large-v2",
    top_k=3,
    # api_key="your-api-key"  # or set MXBAI_API_KEY env var
)

documents = [
    Document(
        page_content="Machine learning is a subset of artificial intelligence that focuses on algorithms.",
        metadata={"source": "ml_guide.pdf", "page": 1},
    ),
    Document(
        page_content="Deep learning uses neural networks with multiple layers for complex pattern recognition.",
        metadata={"source": "dl_tutorial.pdf", "page": 5},
    ),
    Document(
        page_content="Natural language processing helps computers understand and generate human language.",
        metadata={"source": "nlp_book.pdf", "page": 12},
    ),
    Document(
        page_content="Computer vision enables machines to interpret and analyze visual information.",
        metadata={"source": "cv_paper.pdf", "page": 3},
    ),
    Document(
        page_content="Reinforcement learning trains agents through trial and error with rewards.",
        metadata={"source": "rl_research.pdf", "page": 8},
    ),
]

query = "What is deep learning and neural networks?"
reranked_docs = reranker.compress_documents(documents, query)

print(f"Query: {query}")
print(f"Original documents: {len(documents)}")
print(f"Reranked documents: {len(reranked_docs)}")

for i, doc in enumerate(reranked_docs, 1):
    print(f"Rank {i}:")
    print(f"Content: {doc.page_content}")

Document Loader

Load and parse documents from various formats:

from mixedbread_ai_langchain import MixedbreadDocumentLoader

print("=== Basic Document Loading ===")

loader = MixedbreadDocumentLoader(
    file_path="path/to/your/document.pdf",
    # api_key="your-api-key"  # or set MXBAI_API_KEY env var
)

try:
    documents = loader.load()

    print(f"Loaded {len(documents)} document chunks")

    for i, doc in enumerate(documents):
        print(f"Chunk {i + 1}:")
        print(f"Content: {doc.page_content[:100]}...")

except Exception as e:
    print(f"Error loading document: {e}")

Vector Store Retriever

Retrieve documents from Mixedbread vector stores:

from mixedbread_ai_langchain import MixedbreadVectorStoreRetriever

print("=== Chunk Search Example ===")

retriever = MixedbreadVectorStoreRetriever(
    vector_store_identifiers=["your-vector-store-id"],
    search_type="chunk",
    top_k=5,
    # api_key="your-api-key"  # or set MXBAI_API_KEY env var
)

query = "What is machine learning?"
documents = retriever.invoke(query)

print(f"Query: {query}")
print(f"Found {len(documents)} relevant chunks:")

for i, doc in enumerate(documents):
    print(f"Chunk {i+1}:")
    print(f"  Content: {doc.page_content[:100]}...")
    print(f"  Source: {doc.metadata.get('filename', 'unknown')}")
    print(f"  Score: {doc.metadata.get('score', 'N/A'):.3f}")

Chain Examples

RAG Chain with vector store retriever

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
from mixedbread_ai_langchain import MixedbreadVectorStoreRetriever

retriever = MixedbreadVectorStoreRetriever(
    vector_store_identifiers=["your-vector-store-id"], search_type="chunk", top_k=3
)

template = """Answer the question based on the provided context.

Context:
{context}

Question: {question}
Answer:"""

prompt = ChatPromptTemplate.from_template(template)
llm = ChatOpenAI(model="gpt-4o")

rag_chain = {"context": retriever, "question": RunnablePassthrough()} | prompt | llm

question = "Your question here"
retrieved_docs = retriever.invoke(question)
print(f"Retrieved {len(retrieved_docs)} documents:")
for i, doc in enumerate(retrieved_docs, 1):
    print(f"Document {i}: {doc.page_content[:100]}...")

result = rag_chain.invoke(question)
print(f"\nAnswer: {result.content}")

Last updated: August 18, 2025