Skip to content

Repository files navigation

Logo
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

SeekStorm REST client (Python wrapper via PyO3/Maturin)

PyPI License

SeekStorm REST client (Pure Python)

PyPI GitHub Stars License

SeekStorm REST client (C#)

NuGet version GitHub Stars License

SeekStorm REST client (Rust)

Crates.io Downloads Documentation License Roadmap

SeekStorm multi-tenancy search server

Crates.io Downloads Docker REST API Documentation License Roadmap

SeekStorm in-process search library

Crates.io Downloads Documentation License Roadmap

Website | Benchmark | Demo | Repository for SeekStorm Python client | Repository for SeekStorm library, server, Rust client | Roadmap | Blog | X

Usage of the Python client

Install seekstorm-client-py

pip install seekstorm-client-py
import 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)

Build seekstorm_client_py

pip install uv
python -m venv .venv
source .venv/bin/activate  # On Windows use: .venv\Scripts\activate
uv tool install maturin
maturin develop

Test

Make sure you start the SeekStorm server before running these tests!

python -m unittest -v test_client.py

About

Python client for the SeekStorm vector & lexical search server

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages