
Python client for the SeekStorm vector & lexical search server.
The Python client is based on the Rust client via PyO3 and Maturin and supports the following platforms: linux_x86_64, linux_aarch64, windows, macos_x86_64, macos_aarch64.
seekstorm_client_py is open source licensed under the Apache License 2.0
Website | Benchmark | Demo | Repository for SeekStorm Python client | Repository for SeekStorm library, server, Rust client | Roadmap | Blog | X
Install seekstorm-client-py
pip install seekstorm-client-pyimport json
from seekstorm_client_py import (
PySeekStormClient as SeekStormClient,
ApikeyQuotaObject,
CreateIndexRequest,
GetDocumentRequest,
SearchRequestObject,
)
BASE_URL = "http://127.0.0.1:80"
DEMO_API_KEY = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
MASTER_API_KEY = "/iWStCpyfpd/BVlHOFtwnMgrFrmof4jGq/OQDWXQzcM="
client = SeekStormClient()
# Server live check
result = client.live(BASE_URL)
# Create API key
quota = ApikeyQuotaObject()
quota.indices_max = 10
quota.indices_size_max = 100_000_000_000
quota.documents_max = 100_000_000
quota.operations_max = 1_000_000_000
quota.rate_limit = None
quota.demo = True
result = client.create_apikey(BASE_URL, MASTER_API_KEY, quota)
# Create index
schema_json = """
[{"field":"title","field_type":"Text","store":false,"index_lexical":false},
{"field":"body","field_type":"Text","store":true,"index_lexical":true,"longest":true},
{"field":"url","field_type":"Text","store":false,"index_lexical":false}]
"""
create_request = CreateIndexRequest()
create_request.index_name = "test_index"
create_request.similarity = "Bm25f"
create_request.tokenizer = "UnicodeAlphanumeric"
create_request.stemmer = "None"
create_request.document_compression = "Snappy"
create_request.schema = schema_json
create_request.ngram_indexing = 0
index_id = client.create_index(BASE_URL, DEMO_API_KEY, create_request)
# Index document
client.index_document(BASE_URL, DEMO_API_KEY, index_id, json.dumps({"title": "title2", "body": "body2 test", "url": "url2"}))
# Commit index
client.commit_index(BASE_URL, DEMO_API_KEY, index_id)
# Search index
request = SearchRequestObject("+body2 +test")
request.offset = 0
request.length = 10
request.enable_empty_query = False
request.realtime = False
result_object = client.query_index(BASE_URL, DEMO_API_KEY, index_id, request)pip install uv
python -m venv .venv
source .venv/bin/activate # On Windows use: .venv\Scripts\activate
uv tool install maturin
maturin developMake sure you start the SeekStorm server before running these tests!
python -m unittest -v test_client.py