LlamaIndex Vector_Stores Integration: Vespa
Vespa.ai is an open-source big data serving engine. It is designed for low-latency and high-throughput serving of data and models. Vespa.ai is used by many companies to serve search results, recommendations, and rankings for billions of documents and users, expecting response times in the milliseconds.
This integration allows you to use Vespa.ai as a vector store for LlamaIndex. Vespa has integrated support for embedding inference, so you don't need to run a separate service for these tasks.
Huggingface 🤗 embedders are supported, as well as SPLADE and ColBERT.
Abstraction level of this integration
To make it really simple to get started, we provide a template Vespa application that will be deployed upon initializing the vector store. This removes some of the complexity of setting up Vespa for the first time, but for serious use cases, we strongly recommend that you read the Vespa documentation and tailor the application to your needs.
The template
The provided template Vespa application can be seen below:
from vespa.package import (
ApplicationPackage,
Field,
Schema,
Document,
HNSW,
RankProfile,
Component,
Parameter,
FieldSet,
GlobalPhaseRanking,
Function,
)
hybrid_template = ApplicationPackage(
name="hybridsearch",
schema=[
Schema(
name="doc",
document=Document(
fields=[
Field(name="id", type="string", indexing=["summary"]),
Field(
name="metadata", type="string", indexing=["summary"]
),
Field(
name="text",
type="string",
indexing=["index", "summary"],
index="enable-bm25",
bolding=True,
),
Field(
name="embedding",
type="tensor<float>(x[384])",
indexing=[
"input text",
"embed",
"index",
"attribute",
],
ann=HNSW(distance_metric="angular"),
is_document_field=False,
),
]
),
fieldsets=[FieldSet(name="default", fields=["text", "metadata"])],
rank_profiles=[
RankProfile(
name="bm25",
inputs=[("query(q)", "tensor<float>(x[384])")],
functions=[
Function(name="bm25sum", expression="bm25(text)")
],
first_phase="bm25sum",
),
RankProfile(
name="semantic",
inputs=[("query(q)", "tensor<float>(x[384])")],
first_phase="closeness(field, embedding)",
),
RankProfile(
name="fusion",
inherits="bm25",
inputs=[("query(q)", "tensor<float>(x[384])")],
first_phase="closeness(field, embedding)",
global_phase=GlobalPhaseRanking(
expression="reciprocal_rank_fusion(bm25sum, closeness(field, embedding))",
rerank_count=1000,
),
),
],
)
],
components=[
Component(
id="e5",
type="hugging-face-embedder",
parameters=[
Parameter(
"transformer-model",
{
"url": "https://github.com/vespa-engine/sample-apps/raw/master/simple-semantic-search/model/e5-small-v2-int8.onnx"
},
),
Parameter(
"tokenizer-model",
{
"url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/simple-semantic-search/model/tokenizer.json"
},
),
],
)
],
)
Note that the fields id, metadata, text, and embedding are required for the integration to work.
The schema name must also be doc, and the rank profiles must be named bm25, semantic, and fusion.
Other than that you are free to modify as you see fit by switching out embedding models, adding more fields, or changing the ranking expressions.
For more details, check out this Pyvespa example notebook on hybrid search.
Going to production
If you are ready to graduate to a production setup, we highly recommend to check out the Vespa Cloud service, where we manage all infrastructure and operations for you. Free trials are available.
Next steps
There are many awesome features in Vespa, that are not exposed directly in this integration, check out Pyvespa examples for some inspiration on what you can do with Vespa.
Teasers:
- Binary + Matryoshka embeddings.
- ColBERT.
- ONNX models.
- XGBoost and lightGBM models for ranking.
- Multivector indexing.
- and much more.
Metadata
Release files for llama-index-vector-stores-vespa 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| llama_index_vector_stores_vespa-0.5.0.tar.gz | 9.9 kB | Without provenance | Details for llama_index_vector_stores_vespa-0.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| llama_index_vector_stores_vespa-0.5.0-py3-none-any.whl | Python 3 | none | any | Details for llama_index_vector_stores_vespa-0.5.0-py3-none-any.whl |
Total release size: 20.7 kB
Release files / llama_index_vector_stores_vespa-0.5.0.tar.gz
| Download URL | llama_index_vector_stores_vespa-0.5.0.tar.gz |
|---|---|
| Size | 9.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0301b2b3db92d1f1a260c9b9a6698ab4699dc1f898bc289f70cc798984b7fff5
|
|
BLAKE2b-256 checksum How to use checksums |
c68c05930e4a15f6083408e4072e4824af4b4a7b0107d8eb6cf06aebfc949d86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / llama_index_vector_stores_vespa-0.5.0-py3-none-any.whl
| Download URL | llama_index_vector_stores_vespa-0.5.0-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e6eec590247b566047676258f9ce3c041179de95dcd0459e08011b7a64096911
|
|
BLAKE2b-256 checksum How to use checksums |
633f0fd3e5013e2aea540157c8f27837508d02557b0b1989e04e04f8d5c6a9ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for llama-index-vector-stores-vespa 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.