Apache Solr Vector Store for LlamaIndex
A LlamaIndex VectorStore using Apache Solr as the backend.
Install
pip install llama-index
pip install llama-index-vector-stores-solr
Solr References
Quickstart
Imports
from llama_index.vector_stores.solr import (
ApacheSolrVectorStore,
SyncSolrClient,
AsyncSolrClient,
)
from llama_index.core import (
VectorStoreIndex,
StorageContext,
Document,
MockEmbedding,
)
import pytest
from llama_index.core import Settings
from llama_index.core.vector_stores.types import (
VectorStoreQuery,
VectorStoreQueryMode,
)
from llama_index.core.schema import NodeWithScore
Setup Vector Store
SOLR_COLLECTION_URL = "http://localhost:8983/solr/my_collection" # assumes a solr collection is running here
sync_client = SyncSolrClient(base_url=SOLR_COLLECTION_URL)
async_client = AsyncSolrClient(base_url=SOLR_COLLECTION_URL)
vector_store = ApacheSolrVectorStore(
sync_client=sync_client,
async_client=async_client,
nodeid_field="id",
content_field="content_txt_en", # store content in a text field searchable by BM25
embedding_field="vector_field", # dense vector field configured in Solr schema
metadata_to_solr_field_mapping=[
("author", "author_s"),
],
text_search_fields=["content_txt_en"],
)
Create Index and Query
# Dummy Documents
docs = [
Document(
text="Apache Solr integrates with LlamaIndex.",
metadata={"author": "alice"},
),
Document(
text="Vector search lets you find semantically similar text.",
metadata={"author": "bob"},
),
]
# Create the index
storage_context = StorageContext.from_defaults(vector_store=vector_store)
# NOTE: This will use the default embedding model set at Settings.embed_model
# Configure your own if you wish to do so.
# Alternatively this Vectorstore can be used with the IngestionPipeline as well.
index = VectorStoreIndex.from_documents(docs, storage_context=storage_context)
BM25 Search
- This is a naive implementation ideally create a retriever with BaseRetriever
def simple_bm25(vector_store, query_str="semantic search"):
results = vector_store.query(
VectorStoreQuery(
mode=VectorStoreQueryMode.TEXT_SEARCH,
query_str=query_str,
sparse_top_k=2,
)
)
return [
NodeWithScore(node=node, score=score)
for node, score in zip(
results.nodes, results.similarities or [], strict=True
)
]
bm25_search_results = simple_bm25(vector_store, query_str="semantic search")
Dense Vector Search
- This is a naive implementation ideally create a retriever with BaseRetriever
# Dense Vector Search
def simple_vector_search(vector_store, query_str="semantic search"):
retriever = index.as_retriever(similarity_top_k=1)
return retriever.retrieve("semantic search")
vector_search_results = simple_vector_search(vector_store, "semantic search")
Query Engine
query_engine = index.as_query_engine(similarity_top_k=2)
# NOTE: Will use default embedding and LLM model set at Settings
# Configure your own if you wish to do so.
res = query_engine.query("semantic search")
Metadata
Release files for llama-index-vector-stores-solr 0.3.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 | |
|---|---|---|---|---|
| llama_index_vector_stores_solr-0.3.0.tar.gz | 21.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llama_index_vector_stores_solr-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 48.0 kB
Release files / llama_index_vector_stores_solr-0.3.0.tar.gz
| Download URL | llama_index_vector_stores_solr-0.3.0.tar.gz |
|---|---|
| Size | 21.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9725ebdcaa374954e1d896e36926d85ba7a32b913df4d2ed580aa3e499067fa7
|
|
BLAKE2b-256 checksum How to use checksums |
822a612fea79d06f0dc22f13c3d38134e7abdeff964e6ba938d05f13fbdba933
|
| 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_solr-0.3.0-py3-none-any.whl
| Download URL | llama_index_vector_stores_solr-0.3.0-py3-none-any.whl |
|---|---|
| Size | 26.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
41bcd82bbacfc0f700e58368191a4ee3655ac1a411dc277f28a11445e30689cc
|
|
BLAKE2b-256 checksum How to use checksums |
5c60c257aae693fb068559069536b66c2b8ddcf6e120c396a70b470108a8f529
|
| 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-solr 0.3.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.