Skip to main content

Vespa integration for mistralai-search-toolkit

Project description

Vespa Plugin for Search Toolkit

Vespa integration plugin for mistralai-search-toolkit.

This plugin provides a production-ready Vespa search backend implementation for the Search Toolkit, enabling powerful vector, keyword, and hybrid search capabilities.

Installation

pip install mistralai-search-toolkit-plugins-vespa

Or as an optional dependency of the core package:

pip install mistralai-search-toolkit[vespa]

Quick Start

1. Bootstrap Your Application

Create the application structure with an initial migration:

uv run mistral-vespa generate-migration --app-dir ./vespa_app initial_schema

This creates the ./vespa_app/ directory and generates a migration file. Fill it with your schema definition:

from mistralai.search.toolkit.plugins.vespa.app.schemas.app import SearchMode
from mistralai.search.toolkit.plugins.vespa.migration import VespaMigration, create_default_schema, set_app_name

class InitialSchema(VespaMigration):
    def migrate(self) -> None:
        set_app_name("articles")
        create_default_schema(
            name="articles",
            mode=SearchMode.INDEX,
            embedding_dimensions=1024,  # Adjust based on your embedder
            schema_version=1,
        )

2. Start a Local Vespa Instance

uv run mistral-vespa local up --query-port 18080 --config-port 19171 --name vespa-dev

3. Deploy Your Application

Deploy the migrations to generate the vespa_app module:

uv run mistral-vespa migrate \
  --app-dir ./vespa_app \
  --config-server http://localhost:19171 \
  --query-port 18080

This generates the vespa_app Python module that you can now import.

4. Index Documents

import os
from mistralai.search.toolkit.ingestion.pipelines import Pipeline
from mistralai.search.toolkit.ingestion.loaders import FilesystemFileLoader
from mistralai.search.toolkit.ingestion.text_splitters import CharacterTextSplitter
from mistralai.search.toolkit.embedders import MistralEmbedder, MODEL_1024_EMBEDDING
from mistralai.client import Mistral
from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app

# Setup
mistral_client = Mistral(api_key=os.environ.get("MISTRAL_API_KEY"))
vespa_config = VespaClientConfig(
    endpoint=os.environ.get("VESPA_ENDPOINT", "http://localhost:18080"),
)
collection_name = "articles"

# Connect to Vespa
vector_store = app.get_search_index(vespa_config, collection_name=collection_name)

# Index documents
pipeline = Pipeline(
    loader=FilesystemFileLoader(),
    text_splitter=CharacterTextSplitter(chunk_size=512),
    embedder=MistralEmbedder(client=mistral_client, model_name=MODEL_1024_EMBEDDING),
    stores=vector_store,
)

num_chunks = await pipeline.run(documents=["doc1.pdf", "doc2.pdf"])

4. Search

from mistralai.search.toolkit.embedders import MistralEmbedder, MODEL_1024_EMBEDDING
from mistralai.search.toolkit.retrieval import QueryEngine
from mistralai.search.toolkit.retrieval.retrievers import VectorRetriever

# Setup search
embedder = MistralEmbedder(client=mistral_client, model_name=MODEL_1024_EMBEDDING)
query_engine = QueryEngine(
    retriever=[VectorRetriever(client=vector_store, embedder=embedder)],
)

# Search documents
results = await query_engine.search(query="What is machine learning?", top_k=10)

# Display results
for result in results.results:
    print(f"Score: {result.score}")
    print(f"Content: {result.content}\n")

Configuration

Quick Setup

Use app.get_search_index() for the common case where a single endpoint serves both query and feed APIs:

import os
from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app

vespa_config = VespaClientConfig(
    endpoint=os.environ.get("VESPA_ENDPOINT", "http://localhost:18080"),
)
vector_store = app.get_search_index(vespa_config, collection_name="articles")

Advanced Setup

Use separate query and feed endpoints for production deployments:

from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app

client_config = VespaClientConfig(
    query_endpoint=os.environ.get("VESPA_QUERY_ENDPOINT", "https://query.vespa.example.com"),
    feed_endpoint=os.environ.get("VESPA_FEED_ENDPOINT", "https://feed.vespa.example.com"),
)
vector_store = app.get_search_index(
    client_config=client_config,
    collection_name="articles",
)

License

This plugin is licensed under the Apache License 2.0.

Support

For issues related to the Search Toolkit, refer to the Search Toolkit documentation.

For Vespa-specific questions, visit Vespa documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file mistralai_search_toolkit_plugins_vespa-0.0.10.tar.gz.

File metadata

File hashes

Hashes for mistralai_search_toolkit_plugins_vespa-0.0.10.tar.gz
Algorithm Hash digest
SHA256 2750a6580fbeec7c9bb8c9108833fe083aaaf1f52d8de184a99af0ebcd4d9d37
MD5 0068d45e6fbc864c6e1233f5bf74bdd0
BLAKE2b-256 47bdef2b8d13c231328d6ba904ac3a5d1b2dad3d2ac0214fdf8a5658c7d94a3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for mistralai_search_toolkit_plugins_vespa-0.0.10.tar.gz:

Publisher: search-toolkit-plugins.yaml on mistralai/dashboard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mistralai_search_toolkit_plugins_vespa-0.0.10-py3-none-any.whl.

File metadata

File hashes

Hashes for mistralai_search_toolkit_plugins_vespa-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 48c4ba55e7e7d1bd4c3d6292471b73fb92f6d045fbc351b4b8a1ec084e325711
MD5 23d5f767b7321d3f1ac32a2fb182f2e6
BLAKE2b-256 c34ea26b3403182eb24e532ff40305b411680bd49356b6122c29f2ad0653ba7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mistralai_search_toolkit_plugins_vespa-0.0.10-py3-none-any.whl:

Publisher: search-toolkit-plugins.yaml on mistralai/dashboard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page