hermes-client-python 1.7.12__tar.gz → 1.7.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/PKG-INFO +1 -1
- {hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/pyproject.toml +1 -1
- {hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/src/hermes_client_python/__init__.py +10 -1
- {hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/src/hermes_client_python/client.py +80 -6
- hermes_client_python-1.7.13/src/hermes_client_python/hermes_pb2.py +142 -0
- {hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/src/hermes_client_python/types.py +20 -1
- hermes_client_python-1.7.12/src/hermes_client_python/hermes_pb2.py +0 -132
- {hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/.gitignore +0 -0
- {hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/README.md +0 -0
- {hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/src/hermes_client_python/hermes_pb2_grpc.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hermes-client-python
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.13
|
|
4
4
|
Summary: Async Python client for Hermes search server
|
|
5
5
|
Project-URL: Homepage, https://github.com/SpaceFrontiers/hermes
|
|
6
6
|
Project-URL: Repository, https://github.com/SpaceFrontiers/hermes
|
{hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/src/hermes_client_python/__init__.py
RENAMED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
"""Async Python client for Hermes search server."""
|
|
2
2
|
|
|
3
3
|
from .client import HermesClient
|
|
4
|
-
from .types import
|
|
4
|
+
from .types import (
|
|
5
|
+
DocAddress,
|
|
6
|
+
Document,
|
|
7
|
+
IndexInfo,
|
|
8
|
+
SearchHit,
|
|
9
|
+
SearchResponse,
|
|
10
|
+
VectorFieldStats,
|
|
11
|
+
)
|
|
5
12
|
|
|
6
13
|
__all__ = [
|
|
7
14
|
"HermesClient",
|
|
15
|
+
"DocAddress",
|
|
8
16
|
"Document",
|
|
9
17
|
"SearchHit",
|
|
10
18
|
"SearchResponse",
|
|
11
19
|
"IndexInfo",
|
|
20
|
+
"VectorFieldStats",
|
|
12
21
|
]
|
|
13
22
|
|
|
14
23
|
__version__ = "1.0.2"
|
{hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/src/hermes_client_python/client.py
RENAMED
|
@@ -11,7 +11,15 @@ from grpc import aio
|
|
|
11
11
|
|
|
12
12
|
from . import hermes_pb2 as pb
|
|
13
13
|
from . import hermes_pb2_grpc as pb_grpc
|
|
14
|
-
from .types import
|
|
14
|
+
from .types import (
|
|
15
|
+
DocAddress,
|
|
16
|
+
Document,
|
|
17
|
+
IndexInfo,
|
|
18
|
+
SearchHit,
|
|
19
|
+
SearchResponse,
|
|
20
|
+
SearchTimings,
|
|
21
|
+
VectorFieldStats,
|
|
22
|
+
)
|
|
15
23
|
|
|
16
24
|
|
|
17
25
|
class HermesClient:
|
|
@@ -158,11 +166,21 @@ class HermesClient:
|
|
|
158
166
|
self._ensure_connected()
|
|
159
167
|
request = pb.GetIndexInfoRequest(index_name=index_name)
|
|
160
168
|
response = await self._search_stub.GetIndexInfo(request)
|
|
169
|
+
vector_stats = [
|
|
170
|
+
VectorFieldStats(
|
|
171
|
+
field_name=vs.field_name,
|
|
172
|
+
vector_type=vs.vector_type,
|
|
173
|
+
total_vectors=vs.total_vectors,
|
|
174
|
+
dimension=vs.dimension,
|
|
175
|
+
)
|
|
176
|
+
for vs in response.vector_stats
|
|
177
|
+
]
|
|
161
178
|
return IndexInfo(
|
|
162
179
|
index_name=response.index_name,
|
|
163
180
|
num_docs=response.num_docs,
|
|
164
181
|
num_segments=response.num_segments,
|
|
165
182
|
schema=response.schema,
|
|
183
|
+
vector_stats=vector_stats,
|
|
166
184
|
)
|
|
167
185
|
|
|
168
186
|
# =========================================================================
|
|
@@ -294,6 +312,8 @@ class HermesClient:
|
|
|
294
312
|
fields_to_load: list[str] | None = None,
|
|
295
313
|
reranker: tuple[str, list[float], int] | None = None,
|
|
296
314
|
reranker_combiner: str = "weighted_top_k",
|
|
315
|
+
matryoshka_dims: int = 0,
|
|
316
|
+
filters: list[dict[str, Any]] | None = None,
|
|
297
317
|
) -> SearchResponse:
|
|
298
318
|
"""Search for documents.
|
|
299
319
|
|
|
@@ -318,6 +338,16 @@ class HermesClient:
|
|
|
318
338
|
l1_limit=0 defaults to 10x the final limit.
|
|
319
339
|
reranker_combiner: Score combiner for reranker multi-value fields:
|
|
320
340
|
"log_sum_exp" (default), "max", "avg", "sum"
|
|
341
|
+
matryoshka_dims: Matryoshka pre-filter dimensions for reranker.
|
|
342
|
+
When > 0, scores candidates on leading N dimensions first,
|
|
343
|
+
keeps top survivors, then does full-dimension exact scoring.
|
|
344
|
+
0 = disabled (default).
|
|
345
|
+
filters: Fast-field filters. Each dict has "field" and one condition key:
|
|
346
|
+
- {"field": "status", "eq_text": "active"}
|
|
347
|
+
- {"field": "price", "eq_u64": 100}
|
|
348
|
+
- {"field": "price", "range": {"min": 10.0, "max": 100.0}}
|
|
349
|
+
- {"field": "category", "in_text": ["books", "movies"]}
|
|
350
|
+
- {"field": "count", "in_u64": [1, 2, 3]}
|
|
321
351
|
|
|
322
352
|
Returns:
|
|
323
353
|
SearchResponse with hits
|
|
@@ -377,8 +407,11 @@ class HermesClient:
|
|
|
377
407
|
vector=query_vector,
|
|
378
408
|
limit=l1_limit,
|
|
379
409
|
combiner=reranker_combiner_value,
|
|
410
|
+
matryoshka_dims=matryoshka_dims,
|
|
380
411
|
)
|
|
381
412
|
|
|
413
|
+
pb_filters = _build_filters(filters) if filters else []
|
|
414
|
+
|
|
382
415
|
request = pb.SearchRequest(
|
|
383
416
|
index_name=index_name,
|
|
384
417
|
query=query,
|
|
@@ -386,13 +419,17 @@ class HermesClient:
|
|
|
386
419
|
offset=offset,
|
|
387
420
|
fields_to_load=fields_to_load or [],
|
|
388
421
|
reranker=pb_reranker,
|
|
422
|
+
filters=pb_filters,
|
|
389
423
|
)
|
|
390
424
|
|
|
391
425
|
response = await self._search_stub.Search(request)
|
|
392
426
|
|
|
393
427
|
hits = [
|
|
394
428
|
SearchHit(
|
|
395
|
-
|
|
429
|
+
address=DocAddress(
|
|
430
|
+
segment_id=hit.address.segment_id,
|
|
431
|
+
doc_id=hit.address.doc_id,
|
|
432
|
+
),
|
|
396
433
|
score=hit.score,
|
|
397
434
|
fields={k: _from_field_value(v) for k, v in hit.fields.items()},
|
|
398
435
|
)
|
|
@@ -416,18 +453,23 @@ class HermesClient:
|
|
|
416
453
|
timings=timings,
|
|
417
454
|
)
|
|
418
455
|
|
|
419
|
-
async def get_document(
|
|
420
|
-
|
|
456
|
+
async def get_document(
|
|
457
|
+
self, index_name: str, address: DocAddress
|
|
458
|
+
) -> Document | None:
|
|
459
|
+
"""Get a document by address.
|
|
421
460
|
|
|
422
461
|
Args:
|
|
423
462
|
index_name: Name of the index
|
|
424
|
-
|
|
463
|
+
address: DocAddress from a SearchHit
|
|
425
464
|
|
|
426
465
|
Returns:
|
|
427
466
|
Document or None if not found
|
|
428
467
|
"""
|
|
429
468
|
self._ensure_connected()
|
|
430
|
-
request = pb.GetDocumentRequest(
|
|
469
|
+
request = pb.GetDocumentRequest(
|
|
470
|
+
index_name=index_name,
|
|
471
|
+
address=pb.DocAddress(segment_id=address.segment_id, doc_id=address.doc_id),
|
|
472
|
+
)
|
|
431
473
|
try:
|
|
432
474
|
response = await self._search_stub.GetDocument(request)
|
|
433
475
|
fields = {k: _from_field_value(v) for k, v in response.fields.items()}
|
|
@@ -599,6 +641,38 @@ def _reranker_combiner_to_proto(combiner: str) -> int:
|
|
|
599
641
|
}.get(combiner.lower(), 0)
|
|
600
642
|
|
|
601
643
|
|
|
644
|
+
def _build_filters(filters: list[dict[str, Any]]) -> list[pb.Filter]:
|
|
645
|
+
"""Convert filter dicts to protobuf Filter messages."""
|
|
646
|
+
result = []
|
|
647
|
+
for f in filters:
|
|
648
|
+
field = f["field"]
|
|
649
|
+
kwargs: dict[str, Any] = {"field": field}
|
|
650
|
+
if "eq_u64" in f:
|
|
651
|
+
kwargs["eq_u64"] = int(f["eq_u64"])
|
|
652
|
+
elif "eq_i64" in f:
|
|
653
|
+
kwargs["eq_i64"] = int(f["eq_i64"])
|
|
654
|
+
elif "eq_f64" in f:
|
|
655
|
+
kwargs["eq_f64"] = float(f["eq_f64"])
|
|
656
|
+
elif "eq_text" in f:
|
|
657
|
+
kwargs["eq_text"] = str(f["eq_text"])
|
|
658
|
+
elif "range" in f:
|
|
659
|
+
r = f["range"]
|
|
660
|
+
range_kwargs = {}
|
|
661
|
+
if "min" in r:
|
|
662
|
+
range_kwargs["min"] = float(r["min"])
|
|
663
|
+
if "max" in r:
|
|
664
|
+
range_kwargs["max"] = float(r["max"])
|
|
665
|
+
kwargs["range"] = pb.RangeFilter(**range_kwargs)
|
|
666
|
+
elif "in_text" in f:
|
|
667
|
+
kwargs["in_values"] = pb.InFilter(text_values=list(f["in_text"]))
|
|
668
|
+
elif "in_u64" in f:
|
|
669
|
+
kwargs["in_values"] = pb.InFilter(u64_values=[int(v) for v in f["in_u64"]])
|
|
670
|
+
elif "in_i64" in f:
|
|
671
|
+
kwargs["in_values"] = pb.InFilter(i64_values=[int(v) for v in f["in_i64"]])
|
|
672
|
+
result.append(pb.Filter(**kwargs))
|
|
673
|
+
return result
|
|
674
|
+
|
|
675
|
+
|
|
602
676
|
def _build_query(
|
|
603
677
|
*,
|
|
604
678
|
term: tuple[str, str] | None = None,
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: hermes.proto
|
|
5
|
+
# Protobuf Python Version: 6.31.1
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
6,
|
|
15
|
+
31,
|
|
16
|
+
1,
|
|
17
|
+
'',
|
|
18
|
+
'hermes.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0chermes.proto\x12\x06hermes\"\xad\x02\n\x05Query\x12!\n\x04term\x18\x01 \x01(\x0b\x32\x11.hermes.TermQueryH\x00\x12\'\n\x07\x62oolean\x18\x02 \x01(\x0b\x32\x14.hermes.BooleanQueryH\x00\x12#\n\x05\x62oost\x18\x03 \x01(\x0b\x32\x12.hermes.BoostQueryH\x00\x12\x1f\n\x03\x61ll\x18\x04 \x01(\x0b\x32\x10.hermes.AllQueryH\x00\x12\x32\n\rsparse_vector\x18\x05 \x01(\x0b\x32\x19.hermes.SparseVectorQueryH\x00\x12\x30\n\x0c\x64\x65nse_vector\x18\x06 \x01(\x0b\x32\x18.hermes.DenseVectorQueryH\x00\x12#\n\x05match\x18\x07 \x01(\x0b\x32\x12.hermes.MatchQueryH\x00\x42\x07\n\x05query\"\xa5\x02\n\x11SparseVectorQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0f\n\x07indices\x18\x02 \x03(\r\x12\x0e\n\x06values\x18\x03 \x03(\x02\x12\x0c\n\x04text\x18\x04 \x01(\t\x12,\n\x08\x63ombiner\x18\x05 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner\x12\x13\n\x0bheap_factor\x18\x06 \x01(\x02\x12\x1c\n\x14\x63ombiner_temperature\x18\x07 \x01(\x02\x12\x16\n\x0e\x63ombiner_top_k\x18\x08 \x01(\r\x12\x16\n\x0e\x63ombiner_decay\x18\t \x01(\x02\x12\x18\n\x10weight_threshold\x18\n \x01(\x02\x12\x16\n\x0emax_query_dims\x18\x0b \x01(\r\x12\x0f\n\x07pruning\x18\x0c \x01(\x02\"\xd4\x01\n\x10\x44\x65nseVectorQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06vector\x18\x02 \x03(\x02\x12\x0e\n\x06nprobe\x18\x03 \x01(\r\x12\x15\n\rrerank_factor\x18\x04 \x01(\r\x12,\n\x08\x63ombiner\x18\x05 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner\x12\x1c\n\x14\x63ombiner_temperature\x18\x06 \x01(\x02\x12\x16\n\x0e\x63ombiner_top_k\x18\x07 \x01(\r\x12\x16\n\x0e\x63ombiner_decay\x18\x08 \x01(\x02\"(\n\tTermQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04term\x18\x02 \x01(\t\"k\n\x0c\x42ooleanQuery\x12\x1b\n\x04must\x18\x01 \x03(\x0b\x32\r.hermes.Query\x12\x1d\n\x06should\x18\x02 \x03(\x0b\x32\r.hermes.Query\x12\x1f\n\x08must_not\x18\x03 \x03(\x0b\x32\r.hermes.Query\"9\n\nBoostQuery\x12\x1c\n\x05query\x18\x01 \x01(\x0b\x32\r.hermes.Query\x12\r\n\x05\x62oost\x18\x02 \x01(\x02\"\n\n\x08\x41llQuery\")\n\nMatchQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\"\xcd\x01\n\x08Reranker\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06vector\x18\x02 \x03(\x02\x12\r\n\x05limit\x18\x03 \x01(\r\x12,\n\x08\x63ombiner\x18\x04 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner\x12\x1c\n\x14\x63ombiner_temperature\x18\x05 \x01(\x02\x12\x16\n\x0e\x63ombiner_top_k\x18\x06 \x01(\r\x12\x16\n\x0e\x63ombiner_decay\x18\x07 \x01(\x02\x12\x17\n\x0fmatryoshka_dims\x18\x08 \x01(\r\"\xba\x01\n\x06\x46ilter\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x10\n\x06\x65q_u64\x18\x02 \x01(\x04H\x00\x12\x10\n\x06\x65q_i64\x18\x03 \x01(\x03H\x00\x12\x10\n\x06\x65q_f64\x18\x04 \x01(\x01H\x00\x12\x11\n\x07\x65q_text\x18\x05 \x01(\tH\x00\x12$\n\x05range\x18\x06 \x01(\x0b\x32\x13.hermes.RangeFilterH\x00\x12%\n\tin_values\x18\x07 \x01(\x0b\x32\x10.hermes.InFilterH\x00\x42\x0b\n\tcondition\"A\n\x0bRangeFilter\x12\x10\n\x03min\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x10\n\x03max\x18\x02 \x01(\x01H\x01\x88\x01\x01\x42\x06\n\x04_minB\x06\n\x04_max\"G\n\x08InFilter\x12\x13\n\x0btext_values\x18\x01 \x03(\t\x12\x12\n\nu64_values\x18\x02 \x03(\x04\x12\x12\n\ni64_values\x18\x03 \x03(\x03\"\xbd\x01\n\rSearchRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x1c\n\x05query\x18\x02 \x01(\x0b\x32\r.hermes.Query\x12\r\n\x05limit\x18\x03 \x01(\r\x12\x0e\n\x06offset\x18\x04 \x01(\r\x12\x16\n\x0e\x66ields_to_load\x18\x05 \x03(\t\x12\"\n\x08reranker\x18\x06 \x01(\x0b\x32\x10.hermes.Reranker\x12\x1f\n\x07\x66ilters\x18\x07 \x03(\x0b\x32\x0e.hermes.Filter\"0\n\nDocAddress\x12\x12\n\nsegment_id\x18\x01 \x01(\t\x12\x0e\n\x06\x64oc_id\x18\x02 \x01(\r\"\xdf\x01\n\tSearchHit\x12#\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32\x12.hermes.DocAddress\x12\r\n\x05score\x18\x02 \x01(\x02\x12-\n\x06\x66ields\x18\x03 \x03(\x0b\x32\x1d.hermes.SearchHit.FieldsEntry\x12,\n\x0eordinal_scores\x18\x04 \x03(\x0b\x32\x14.hermes.OrdinalScore\x1a\x41\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.hermes.FieldValue:\x02\x38\x01\".\n\x0cOrdinalScore\x12\x0f\n\x07ordinal\x18\x01 \x01(\r\x12\r\n\x05score\x18\x02 \x01(\x02\"\xdb\x01\n\nFieldValue\x12\x0e\n\x04text\x18\x01 \x01(\tH\x00\x12\r\n\x03u64\x18\x02 \x01(\x04H\x00\x12\r\n\x03i64\x18\x03 \x01(\x03H\x00\x12\r\n\x03\x66\x36\x34\x18\x04 \x01(\x01H\x00\x12\x15\n\x0b\x62ytes_value\x18\x05 \x01(\x0cH\x00\x12-\n\rsparse_vector\x18\x06 \x01(\x0b\x32\x14.hermes.SparseVectorH\x00\x12+\n\x0c\x64\x65nse_vector\x18\x07 \x01(\x0b\x32\x13.hermes.DenseVectorH\x00\x12\x14\n\njson_value\x18\x08 \x01(\tH\x00\x42\x07\n\x05value\"/\n\x0cSparseVector\x12\x0f\n\x07indices\x18\x01 \x03(\r\x12\x0e\n\x06values\x18\x02 \x03(\x02\"\x1d\n\x0b\x44\x65nseVector\x12\x0e\n\x06values\x18\x01 \x03(\x02\"~\n\x0eSearchResponse\x12\x1f\n\x04hits\x18\x01 \x03(\x0b\x32\x11.hermes.SearchHit\x12\x12\n\ntotal_hits\x18\x02 \x01(\r\x12\x0f\n\x07took_ms\x18\x03 \x01(\x04\x12&\n\x07timings\x18\x04 \x01(\x0b\x32\x15.hermes.SearchTimings\"X\n\rSearchTimings\x12\x11\n\tsearch_us\x18\x01 \x01(\x04\x12\x11\n\trerank_us\x18\x02 \x01(\x04\x12\x0f\n\x07load_us\x18\x03 \x01(\x04\x12\x10\n\x08total_us\x18\x04 \x01(\x04\"M\n\x12GetDocumentRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12#\n\x07\x61\x64\x64ress\x18\x02 \x01(\x0b\x32\x12.hermes.DocAddress\"\x91\x01\n\x13GetDocumentResponse\x12\x37\n\x06\x66ields\x18\x01 \x03(\x0b\x32\'.hermes.GetDocumentResponse.FieldsEntry\x1a\x41\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.hermes.FieldValue:\x02\x38\x01\")\n\x13GetIndexInfoRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\"\xbd\x01\n\x14GetIndexInfoResponse\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x10\n\x08num_docs\x18\x02 \x01(\r\x12\x14\n\x0cnum_segments\x18\x03 \x01(\r\x12\x0e\n\x06schema\x18\x04 \x01(\t\x12)\n\x0cmemory_stats\x18\x05 \x01(\x0b\x32\x13.hermes.MemoryStats\x12.\n\x0cvector_stats\x18\x06 \x03(\x0b\x32\x18.hermes.VectorFieldStats\"e\n\x10VectorFieldStats\x12\x12\n\nfield_name\x18\x01 \x01(\t\x12\x13\n\x0bvector_type\x18\x02 \x01(\t\x12\x15\n\rtotal_vectors\x18\x03 \x01(\x04\x12\x11\n\tdimension\x18\x04 \x01(\r\"\x8c\x01\n\x0bMemoryStats\x12\x13\n\x0btotal_bytes\x18\x01 \x01(\x04\x12\x34\n\x0findexing_buffer\x18\x02 \x01(\x0b\x32\x1b.hermes.IndexingBufferStats\x12\x32\n\x0esegment_reader\x18\x03 \x01(\x0b\x32\x1a.hermes.SegmentReaderStats\"\xdf\x01\n\x13IndexingBufferStats\x12\x13\n\x0btotal_bytes\x18\x01 \x01(\x04\x12\x16\n\x0epostings_bytes\x18\x02 \x01(\x04\x12\x1c\n\x14sparse_vectors_bytes\x18\x03 \x01(\x04\x12\x1b\n\x13\x64\x65nse_vectors_bytes\x18\x04 \x01(\x04\x12\x16\n\x0einterner_bytes\x18\x05 \x01(\x04\x12\x1c\n\x14position_index_bytes\x18\x06 \x01(\x04\x12\x14\n\x0cpending_docs\x18\x07 \x01(\r\x12\x14\n\x0cunique_terms\x18\x08 \x01(\r\"\xb7\x01\n\x12SegmentReaderStats\x12\x13\n\x0btotal_bytes\x18\x01 \x01(\x04\x12\x1d\n\x15term_dict_cache_bytes\x18\x02 \x01(\x04\x12\x19\n\x11store_cache_bytes\x18\x03 \x01(\x04\x12\x1a\n\x12sparse_index_bytes\x18\x04 \x01(\x04\x12\x19\n\x11\x64\x65nse_index_bytes\x18\x05 \x01(\x04\x12\x1b\n\x13num_segments_loaded\x18\x06 \x01(\r\"8\n\x12\x43reateIndexRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"&\n\x13\x43reateIndexResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"=\n\nFieldEntry\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.hermes.FieldValue\"3\n\rNamedDocument\x12\"\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x12.hermes.FieldEntry\"Z\n\x1a\x42\x61tchIndexDocumentsRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12(\n\tdocuments\x18\x02 \x03(\x0b\x32\x15.hermes.NamedDocument\"I\n\x1b\x42\x61tchIndexDocumentsResponse\x12\x15\n\rindexed_count\x18\x01 \x01(\r\x12\x13\n\x0b\x65rror_count\x18\x02 \x01(\r\"N\n\x14IndexDocumentRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\"\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x12.hermes.FieldEntry\"/\n\x16IndexDocumentsResponse\x12\x15\n\rindexed_count\x18\x01 \x01(\r\"#\n\rCommitRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\"3\n\x0e\x43ommitResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x10\n\x08num_docs\x18\x02 \x01(\r\"\'\n\x11\x46orceMergeRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\";\n\x12\x46orceMergeResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x14\n\x0cnum_segments\x18\x02 \x01(\r\"(\n\x12\x44\x65leteIndexRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\"&\n\x13\x44\x65leteIndexResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"\x14\n\x12ListIndexesRequest\"*\n\x13ListIndexesResponse\x12\x13\n\x0bindex_names\x18\x01 \x03(\t\"/\n\x19RetrainVectorIndexRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\"-\n\x1aRetrainVectorIndexResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08*\x81\x01\n\x12MultiValueCombiner\x12\x18\n\x14\x43OMBINER_LOG_SUM_EXP\x10\x00\x12\x10\n\x0c\x43OMBINER_MAX\x10\x01\x12\x10\n\x0c\x43OMBINER_AVG\x10\x02\x12\x10\n\x0c\x43OMBINER_SUM\x10\x03\x12\x1b\n\x17\x43OMBINER_WEIGHTED_TOP_K\x10\x04\x32\xdb\x01\n\rSearchService\x12\x37\n\x06Search\x12\x15.hermes.SearchRequest\x1a\x16.hermes.SearchResponse\x12\x46\n\x0bGetDocument\x12\x1a.hermes.GetDocumentRequest\x1a\x1b.hermes.GetDocumentResponse\x12I\n\x0cGetIndexInfo\x12\x1b.hermes.GetIndexInfoRequest\x1a\x1c.hermes.GetIndexInfoResponse2\xf3\x04\n\x0cIndexService\x12\x46\n\x0b\x43reateIndex\x12\x1a.hermes.CreateIndexRequest\x1a\x1b.hermes.CreateIndexResponse\x12P\n\x0eIndexDocuments\x12\x1c.hermes.IndexDocumentRequest\x1a\x1e.hermes.IndexDocumentsResponse(\x01\x12^\n\x13\x42\x61tchIndexDocuments\x12\".hermes.BatchIndexDocumentsRequest\x1a#.hermes.BatchIndexDocumentsResponse\x12\x37\n\x06\x43ommit\x12\x15.hermes.CommitRequest\x1a\x16.hermes.CommitResponse\x12\x43\n\nForceMerge\x12\x19.hermes.ForceMergeRequest\x1a\x1a.hermes.ForceMergeResponse\x12\x46\n\x0b\x44\x65leteIndex\x12\x1a.hermes.DeleteIndexRequest\x1a\x1b.hermes.DeleteIndexResponse\x12\x46\n\x0bListIndexes\x12\x1a.hermes.ListIndexesRequest\x1a\x1b.hermes.ListIndexesResponse\x12[\n\x12RetrainVectorIndex\x12!.hermes.RetrainVectorIndexRequest\x1a\".hermes.RetrainVectorIndexResponseb\x06proto3')
|
|
28
|
+
|
|
29
|
+
_globals = globals()
|
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'hermes_pb2', _globals)
|
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
33
|
+
DESCRIPTOR._loaded_options = None
|
|
34
|
+
_globals['_SEARCHHIT_FIELDSENTRY']._loaded_options = None
|
|
35
|
+
_globals['_SEARCHHIT_FIELDSENTRY']._serialized_options = b'8\001'
|
|
36
|
+
_globals['_GETDOCUMENTRESPONSE_FIELDSENTRY']._loaded_options = None
|
|
37
|
+
_globals['_GETDOCUMENTRESPONSE_FIELDSENTRY']._serialized_options = b'8\001'
|
|
38
|
+
_globals['_MULTIVALUECOMBINER']._serialized_start=4744
|
|
39
|
+
_globals['_MULTIVALUECOMBINER']._serialized_end=4873
|
|
40
|
+
_globals['_QUERY']._serialized_start=25
|
|
41
|
+
_globals['_QUERY']._serialized_end=326
|
|
42
|
+
_globals['_SPARSEVECTORQUERY']._serialized_start=329
|
|
43
|
+
_globals['_SPARSEVECTORQUERY']._serialized_end=622
|
|
44
|
+
_globals['_DENSEVECTORQUERY']._serialized_start=625
|
|
45
|
+
_globals['_DENSEVECTORQUERY']._serialized_end=837
|
|
46
|
+
_globals['_TERMQUERY']._serialized_start=839
|
|
47
|
+
_globals['_TERMQUERY']._serialized_end=879
|
|
48
|
+
_globals['_BOOLEANQUERY']._serialized_start=881
|
|
49
|
+
_globals['_BOOLEANQUERY']._serialized_end=988
|
|
50
|
+
_globals['_BOOSTQUERY']._serialized_start=990
|
|
51
|
+
_globals['_BOOSTQUERY']._serialized_end=1047
|
|
52
|
+
_globals['_ALLQUERY']._serialized_start=1049
|
|
53
|
+
_globals['_ALLQUERY']._serialized_end=1059
|
|
54
|
+
_globals['_MATCHQUERY']._serialized_start=1061
|
|
55
|
+
_globals['_MATCHQUERY']._serialized_end=1102
|
|
56
|
+
_globals['_RERANKER']._serialized_start=1105
|
|
57
|
+
_globals['_RERANKER']._serialized_end=1310
|
|
58
|
+
_globals['_FILTER']._serialized_start=1313
|
|
59
|
+
_globals['_FILTER']._serialized_end=1499
|
|
60
|
+
_globals['_RANGEFILTER']._serialized_start=1501
|
|
61
|
+
_globals['_RANGEFILTER']._serialized_end=1566
|
|
62
|
+
_globals['_INFILTER']._serialized_start=1568
|
|
63
|
+
_globals['_INFILTER']._serialized_end=1639
|
|
64
|
+
_globals['_SEARCHREQUEST']._serialized_start=1642
|
|
65
|
+
_globals['_SEARCHREQUEST']._serialized_end=1831
|
|
66
|
+
_globals['_DOCADDRESS']._serialized_start=1833
|
|
67
|
+
_globals['_DOCADDRESS']._serialized_end=1881
|
|
68
|
+
_globals['_SEARCHHIT']._serialized_start=1884
|
|
69
|
+
_globals['_SEARCHHIT']._serialized_end=2107
|
|
70
|
+
_globals['_SEARCHHIT_FIELDSENTRY']._serialized_start=2042
|
|
71
|
+
_globals['_SEARCHHIT_FIELDSENTRY']._serialized_end=2107
|
|
72
|
+
_globals['_ORDINALSCORE']._serialized_start=2109
|
|
73
|
+
_globals['_ORDINALSCORE']._serialized_end=2155
|
|
74
|
+
_globals['_FIELDVALUE']._serialized_start=2158
|
|
75
|
+
_globals['_FIELDVALUE']._serialized_end=2377
|
|
76
|
+
_globals['_SPARSEVECTOR']._serialized_start=2379
|
|
77
|
+
_globals['_SPARSEVECTOR']._serialized_end=2426
|
|
78
|
+
_globals['_DENSEVECTOR']._serialized_start=2428
|
|
79
|
+
_globals['_DENSEVECTOR']._serialized_end=2457
|
|
80
|
+
_globals['_SEARCHRESPONSE']._serialized_start=2459
|
|
81
|
+
_globals['_SEARCHRESPONSE']._serialized_end=2585
|
|
82
|
+
_globals['_SEARCHTIMINGS']._serialized_start=2587
|
|
83
|
+
_globals['_SEARCHTIMINGS']._serialized_end=2675
|
|
84
|
+
_globals['_GETDOCUMENTREQUEST']._serialized_start=2677
|
|
85
|
+
_globals['_GETDOCUMENTREQUEST']._serialized_end=2754
|
|
86
|
+
_globals['_GETDOCUMENTRESPONSE']._serialized_start=2757
|
|
87
|
+
_globals['_GETDOCUMENTRESPONSE']._serialized_end=2902
|
|
88
|
+
_globals['_GETDOCUMENTRESPONSE_FIELDSENTRY']._serialized_start=2042
|
|
89
|
+
_globals['_GETDOCUMENTRESPONSE_FIELDSENTRY']._serialized_end=2107
|
|
90
|
+
_globals['_GETINDEXINFOREQUEST']._serialized_start=2904
|
|
91
|
+
_globals['_GETINDEXINFOREQUEST']._serialized_end=2945
|
|
92
|
+
_globals['_GETINDEXINFORESPONSE']._serialized_start=2948
|
|
93
|
+
_globals['_GETINDEXINFORESPONSE']._serialized_end=3137
|
|
94
|
+
_globals['_VECTORFIELDSTATS']._serialized_start=3139
|
|
95
|
+
_globals['_VECTORFIELDSTATS']._serialized_end=3240
|
|
96
|
+
_globals['_MEMORYSTATS']._serialized_start=3243
|
|
97
|
+
_globals['_MEMORYSTATS']._serialized_end=3383
|
|
98
|
+
_globals['_INDEXINGBUFFERSTATS']._serialized_start=3386
|
|
99
|
+
_globals['_INDEXINGBUFFERSTATS']._serialized_end=3609
|
|
100
|
+
_globals['_SEGMENTREADERSTATS']._serialized_start=3612
|
|
101
|
+
_globals['_SEGMENTREADERSTATS']._serialized_end=3795
|
|
102
|
+
_globals['_CREATEINDEXREQUEST']._serialized_start=3797
|
|
103
|
+
_globals['_CREATEINDEXREQUEST']._serialized_end=3853
|
|
104
|
+
_globals['_CREATEINDEXRESPONSE']._serialized_start=3855
|
|
105
|
+
_globals['_CREATEINDEXRESPONSE']._serialized_end=3893
|
|
106
|
+
_globals['_FIELDENTRY']._serialized_start=3895
|
|
107
|
+
_globals['_FIELDENTRY']._serialized_end=3956
|
|
108
|
+
_globals['_NAMEDDOCUMENT']._serialized_start=3958
|
|
109
|
+
_globals['_NAMEDDOCUMENT']._serialized_end=4009
|
|
110
|
+
_globals['_BATCHINDEXDOCUMENTSREQUEST']._serialized_start=4011
|
|
111
|
+
_globals['_BATCHINDEXDOCUMENTSREQUEST']._serialized_end=4101
|
|
112
|
+
_globals['_BATCHINDEXDOCUMENTSRESPONSE']._serialized_start=4103
|
|
113
|
+
_globals['_BATCHINDEXDOCUMENTSRESPONSE']._serialized_end=4176
|
|
114
|
+
_globals['_INDEXDOCUMENTREQUEST']._serialized_start=4178
|
|
115
|
+
_globals['_INDEXDOCUMENTREQUEST']._serialized_end=4256
|
|
116
|
+
_globals['_INDEXDOCUMENTSRESPONSE']._serialized_start=4258
|
|
117
|
+
_globals['_INDEXDOCUMENTSRESPONSE']._serialized_end=4305
|
|
118
|
+
_globals['_COMMITREQUEST']._serialized_start=4307
|
|
119
|
+
_globals['_COMMITREQUEST']._serialized_end=4342
|
|
120
|
+
_globals['_COMMITRESPONSE']._serialized_start=4344
|
|
121
|
+
_globals['_COMMITRESPONSE']._serialized_end=4395
|
|
122
|
+
_globals['_FORCEMERGEREQUEST']._serialized_start=4397
|
|
123
|
+
_globals['_FORCEMERGEREQUEST']._serialized_end=4436
|
|
124
|
+
_globals['_FORCEMERGERESPONSE']._serialized_start=4438
|
|
125
|
+
_globals['_FORCEMERGERESPONSE']._serialized_end=4497
|
|
126
|
+
_globals['_DELETEINDEXREQUEST']._serialized_start=4499
|
|
127
|
+
_globals['_DELETEINDEXREQUEST']._serialized_end=4539
|
|
128
|
+
_globals['_DELETEINDEXRESPONSE']._serialized_start=4541
|
|
129
|
+
_globals['_DELETEINDEXRESPONSE']._serialized_end=4579
|
|
130
|
+
_globals['_LISTINDEXESREQUEST']._serialized_start=4581
|
|
131
|
+
_globals['_LISTINDEXESREQUEST']._serialized_end=4601
|
|
132
|
+
_globals['_LISTINDEXESRESPONSE']._serialized_start=4603
|
|
133
|
+
_globals['_LISTINDEXESRESPONSE']._serialized_end=4645
|
|
134
|
+
_globals['_RETRAINVECTORINDEXREQUEST']._serialized_start=4647
|
|
135
|
+
_globals['_RETRAINVECTORINDEXREQUEST']._serialized_end=4694
|
|
136
|
+
_globals['_RETRAINVECTORINDEXRESPONSE']._serialized_start=4696
|
|
137
|
+
_globals['_RETRAINVECTORINDEXRESPONSE']._serialized_end=4741
|
|
138
|
+
_globals['_SEARCHSERVICE']._serialized_start=4876
|
|
139
|
+
_globals['_SEARCHSERVICE']._serialized_end=5095
|
|
140
|
+
_globals['_INDEXSERVICE']._serialized_start=5098
|
|
141
|
+
_globals['_INDEXSERVICE']._serialized_end=5725
|
|
142
|
+
# @@protoc_insertion_point(module_scope)
|
{hermes_client_python-1.7.12 → hermes_client_python-1.7.13}/src/hermes_client_python/types.py
RENAMED
|
@@ -20,11 +20,19 @@ class Document:
|
|
|
20
20
|
return self.fields.get(key, default)
|
|
21
21
|
|
|
22
22
|
|
|
23
|
+
@dataclass
|
|
24
|
+
class DocAddress:
|
|
25
|
+
"""Unique document address: segment + local doc_id."""
|
|
26
|
+
|
|
27
|
+
segment_id: str
|
|
28
|
+
doc_id: int
|
|
29
|
+
|
|
30
|
+
|
|
23
31
|
@dataclass
|
|
24
32
|
class SearchHit:
|
|
25
33
|
"""A single search result."""
|
|
26
34
|
|
|
27
|
-
|
|
35
|
+
address: DocAddress
|
|
28
36
|
score: float
|
|
29
37
|
fields: dict[str, Any] = field(default_factory=dict)
|
|
30
38
|
|
|
@@ -49,6 +57,16 @@ class SearchResponse:
|
|
|
49
57
|
timings: SearchTimings | None = None
|
|
50
58
|
|
|
51
59
|
|
|
60
|
+
@dataclass
|
|
61
|
+
class VectorFieldStats:
|
|
62
|
+
"""Per-field vector statistics."""
|
|
63
|
+
|
|
64
|
+
field_name: str
|
|
65
|
+
vector_type: str # "dense" or "sparse"
|
|
66
|
+
total_vectors: int
|
|
67
|
+
dimension: int
|
|
68
|
+
|
|
69
|
+
|
|
52
70
|
@dataclass
|
|
53
71
|
class IndexInfo:
|
|
54
72
|
"""Information about an index."""
|
|
@@ -57,3 +75,4 @@ class IndexInfo:
|
|
|
57
75
|
num_docs: int
|
|
58
76
|
num_segments: int
|
|
59
77
|
schema: str
|
|
78
|
+
vector_stats: list[VectorFieldStats] = field(default_factory=list)
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
-
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
-
# source: hermes.proto
|
|
5
|
-
# Protobuf Python Version: 6.31.1
|
|
6
|
-
"""Generated protocol buffer code."""
|
|
7
|
-
from google.protobuf import descriptor as _descriptor
|
|
8
|
-
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
-
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
-
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
-
from google.protobuf.internal import builder as _builder
|
|
12
|
-
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
-
_runtime_version.Domain.PUBLIC,
|
|
14
|
-
6,
|
|
15
|
-
31,
|
|
16
|
-
1,
|
|
17
|
-
'',
|
|
18
|
-
'hermes.proto'
|
|
19
|
-
)
|
|
20
|
-
# @@protoc_insertion_point(imports)
|
|
21
|
-
|
|
22
|
-
_sym_db = _symbol_database.Default()
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0chermes.proto\x12\x06hermes\"\xad\x02\n\x05Query\x12!\n\x04term\x18\x01 \x01(\x0b\x32\x11.hermes.TermQueryH\x00\x12\'\n\x07\x62oolean\x18\x02 \x01(\x0b\x32\x14.hermes.BooleanQueryH\x00\x12#\n\x05\x62oost\x18\x03 \x01(\x0b\x32\x12.hermes.BoostQueryH\x00\x12\x1f\n\x03\x61ll\x18\x04 \x01(\x0b\x32\x10.hermes.AllQueryH\x00\x12\x32\n\rsparse_vector\x18\x05 \x01(\x0b\x32\x19.hermes.SparseVectorQueryH\x00\x12\x30\n\x0c\x64\x65nse_vector\x18\x06 \x01(\x0b\x32\x18.hermes.DenseVectorQueryH\x00\x12#\n\x05match\x18\x07 \x01(\x0b\x32\x12.hermes.MatchQueryH\x00\x42\x07\n\x05query\"\xe2\x01\n\x11SparseVectorQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0f\n\x07indices\x18\x02 \x03(\r\x12\x0e\n\x06values\x18\x03 \x03(\x02\x12\x0c\n\x04text\x18\x04 \x01(\t\x12,\n\x08\x63ombiner\x18\x05 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner\x12\x13\n\x0bheap_factor\x18\x06 \x01(\x02\x12\x1c\n\x14\x63ombiner_temperature\x18\x07 \x01(\x02\x12\x16\n\x0e\x63ombiner_top_k\x18\x08 \x01(\r\x12\x16\n\x0e\x63ombiner_decay\x18\t \x01(\x02\"\xd4\x01\n\x10\x44\x65nseVectorQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06vector\x18\x02 \x03(\x02\x12\x0e\n\x06nprobe\x18\x03 \x01(\r\x12\x15\n\rrerank_factor\x18\x04 \x01(\r\x12,\n\x08\x63ombiner\x18\x05 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner\x12\x1c\n\x14\x63ombiner_temperature\x18\x06 \x01(\x02\x12\x16\n\x0e\x63ombiner_top_k\x18\x07 \x01(\r\x12\x16\n\x0e\x63ombiner_decay\x18\x08 \x01(\x02\"(\n\tTermQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04term\x18\x02 \x01(\t\"k\n\x0c\x42ooleanQuery\x12\x1b\n\x04must\x18\x01 \x03(\x0b\x32\r.hermes.Query\x12\x1d\n\x06should\x18\x02 \x03(\x0b\x32\r.hermes.Query\x12\x1f\n\x08must_not\x18\x03 \x03(\x0b\x32\r.hermes.Query\"9\n\nBoostQuery\x12\x1c\n\x05query\x18\x01 \x01(\x0b\x32\r.hermes.Query\x12\r\n\x05\x62oost\x18\x02 \x01(\x02\"\n\n\x08\x41llQuery\")\n\nMatchQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\"\xcd\x01\n\x08Reranker\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06vector\x18\x02 \x03(\x02\x12\r\n\x05limit\x18\x03 \x01(\r\x12,\n\x08\x63ombiner\x18\x04 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner\x12\x1c\n\x14\x63ombiner_temperature\x18\x05 \x01(\x02\x12\x16\n\x0e\x63ombiner_top_k\x18\x06 \x01(\r\x12\x16\n\x0e\x63ombiner_decay\x18\x07 \x01(\x02\x12\x17\n\x0fmatryoshka_dims\x18\x08 \x01(\r\"\x9c\x01\n\rSearchRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x1c\n\x05query\x18\x02 \x01(\x0b\x32\r.hermes.Query\x12\r\n\x05limit\x18\x03 \x01(\r\x12\x0e\n\x06offset\x18\x04 \x01(\r\x12\x16\n\x0e\x66ields_to_load\x18\x05 \x03(\t\x12\"\n\x08reranker\x18\x06 \x01(\x0b\x32\x10.hermes.Reranker\"\xca\x01\n\tSearchHit\x12\x0e\n\x06\x64oc_id\x18\x01 \x01(\r\x12\r\n\x05score\x18\x02 \x01(\x02\x12-\n\x06\x66ields\x18\x03 \x03(\x0b\x32\x1d.hermes.SearchHit.FieldsEntry\x12,\n\x0eordinal_scores\x18\x04 \x03(\x0b\x32\x14.hermes.OrdinalScore\x1a\x41\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.hermes.FieldValue:\x02\x38\x01\".\n\x0cOrdinalScore\x12\x0f\n\x07ordinal\x18\x01 \x01(\r\x12\r\n\x05score\x18\x02 \x01(\x02\"\xdb\x01\n\nFieldValue\x12\x0e\n\x04text\x18\x01 \x01(\tH\x00\x12\r\n\x03u64\x18\x02 \x01(\x04H\x00\x12\r\n\x03i64\x18\x03 \x01(\x03H\x00\x12\r\n\x03\x66\x36\x34\x18\x04 \x01(\x01H\x00\x12\x15\n\x0b\x62ytes_value\x18\x05 \x01(\x0cH\x00\x12-\n\rsparse_vector\x18\x06 \x01(\x0b\x32\x14.hermes.SparseVectorH\x00\x12+\n\x0c\x64\x65nse_vector\x18\x07 \x01(\x0b\x32\x13.hermes.DenseVectorH\x00\x12\x14\n\njson_value\x18\x08 \x01(\tH\x00\x42\x07\n\x05value\"/\n\x0cSparseVector\x12\x0f\n\x07indices\x18\x01 \x03(\r\x12\x0e\n\x06values\x18\x02 \x03(\x02\"\x1d\n\x0b\x44\x65nseVector\x12\x0e\n\x06values\x18\x01 \x03(\x02\"~\n\x0eSearchResponse\x12\x1f\n\x04hits\x18\x01 \x03(\x0b\x32\x11.hermes.SearchHit\x12\x12\n\ntotal_hits\x18\x02 \x01(\r\x12\x0f\n\x07took_ms\x18\x03 \x01(\x04\x12&\n\x07timings\x18\x04 \x01(\x0b\x32\x15.hermes.SearchTimings\"X\n\rSearchTimings\x12\x11\n\tsearch_us\x18\x01 \x01(\x04\x12\x11\n\trerank_us\x18\x02 \x01(\x04\x12\x0f\n\x07load_us\x18\x03 \x01(\x04\x12\x10\n\x08total_us\x18\x04 \x01(\x04\"8\n\x12GetDocumentRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x0e\n\x06\x64oc_id\x18\x02 \x01(\r\"\x91\x01\n\x13GetDocumentResponse\x12\x37\n\x06\x66ields\x18\x01 \x03(\x0b\x32\'.hermes.GetDocumentResponse.FieldsEntry\x1a\x41\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.hermes.FieldValue:\x02\x38\x01\")\n\x13GetIndexInfoRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\"\x8d\x01\n\x14GetIndexInfoResponse\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x10\n\x08num_docs\x18\x02 \x01(\r\x12\x14\n\x0cnum_segments\x18\x03 \x01(\r\x12\x0e\n\x06schema\x18\x04 \x01(\t\x12)\n\x0cmemory_stats\x18\x05 \x01(\x0b\x32\x13.hermes.MemoryStats\"\x8c\x01\n\x0bMemoryStats\x12\x13\n\x0btotal_bytes\x18\x01 \x01(\x04\x12\x34\n\x0findexing_buffer\x18\x02 \x01(\x0b\x32\x1b.hermes.IndexingBufferStats\x12\x32\n\x0esegment_reader\x18\x03 \x01(\x0b\x32\x1a.hermes.SegmentReaderStats\"\xdf\x01\n\x13IndexingBufferStats\x12\x13\n\x0btotal_bytes\x18\x01 \x01(\x04\x12\x16\n\x0epostings_bytes\x18\x02 \x01(\x04\x12\x1c\n\x14sparse_vectors_bytes\x18\x03 \x01(\x04\x12\x1b\n\x13\x64\x65nse_vectors_bytes\x18\x04 \x01(\x04\x12\x16\n\x0einterner_bytes\x18\x05 \x01(\x04\x12\x1c\n\x14position_index_bytes\x18\x06 \x01(\x04\x12\x14\n\x0cpending_docs\x18\x07 \x01(\r\x12\x14\n\x0cunique_terms\x18\x08 \x01(\r\"\xb7\x01\n\x12SegmentReaderStats\x12\x13\n\x0btotal_bytes\x18\x01 \x01(\x04\x12\x1d\n\x15term_dict_cache_bytes\x18\x02 \x01(\x04\x12\x19\n\x11store_cache_bytes\x18\x03 \x01(\x04\x12\x1a\n\x12sparse_index_bytes\x18\x04 \x01(\x04\x12\x19\n\x11\x64\x65nse_index_bytes\x18\x05 \x01(\x04\x12\x1b\n\x13num_segments_loaded\x18\x06 \x01(\r\"8\n\x12\x43reateIndexRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"&\n\x13\x43reateIndexResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"=\n\nFieldEntry\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.hermes.FieldValue\"3\n\rNamedDocument\x12\"\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x12.hermes.FieldEntry\"Z\n\x1a\x42\x61tchIndexDocumentsRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12(\n\tdocuments\x18\x02 \x03(\x0b\x32\x15.hermes.NamedDocument\"I\n\x1b\x42\x61tchIndexDocumentsResponse\x12\x15\n\rindexed_count\x18\x01 \x01(\r\x12\x13\n\x0b\x65rror_count\x18\x02 \x01(\r\"N\n\x14IndexDocumentRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\"\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x12.hermes.FieldEntry\"/\n\x16IndexDocumentsResponse\x12\x15\n\rindexed_count\x18\x01 \x01(\r\"#\n\rCommitRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\"3\n\x0e\x43ommitResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x10\n\x08num_docs\x18\x02 \x01(\r\"\'\n\x11\x46orceMergeRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\";\n\x12\x46orceMergeResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x14\n\x0cnum_segments\x18\x02 \x01(\r\"(\n\x12\x44\x65leteIndexRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\"&\n\x13\x44\x65leteIndexResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"\x14\n\x12ListIndexesRequest\"*\n\x13ListIndexesResponse\x12\x13\n\x0bindex_names\x18\x01 \x03(\t\"/\n\x19RetrainVectorIndexRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\"-\n\x1aRetrainVectorIndexResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08*\x81\x01\n\x12MultiValueCombiner\x12\x18\n\x14\x43OMBINER_LOG_SUM_EXP\x10\x00\x12\x10\n\x0c\x43OMBINER_MAX\x10\x01\x12\x10\n\x0c\x43OMBINER_AVG\x10\x02\x12\x10\n\x0c\x43OMBINER_SUM\x10\x03\x12\x1b\n\x17\x43OMBINER_WEIGHTED_TOP_K\x10\x04\x32\xdb\x01\n\rSearchService\x12\x37\n\x06Search\x12\x15.hermes.SearchRequest\x1a\x16.hermes.SearchResponse\x12\x46\n\x0bGetDocument\x12\x1a.hermes.GetDocumentRequest\x1a\x1b.hermes.GetDocumentResponse\x12I\n\x0cGetIndexInfo\x12\x1b.hermes.GetIndexInfoRequest\x1a\x1c.hermes.GetIndexInfoResponse2\xf3\x04\n\x0cIndexService\x12\x46\n\x0b\x43reateIndex\x12\x1a.hermes.CreateIndexRequest\x1a\x1b.hermes.CreateIndexResponse\x12P\n\x0eIndexDocuments\x12\x1c.hermes.IndexDocumentRequest\x1a\x1e.hermes.IndexDocumentsResponse(\x01\x12^\n\x13\x42\x61tchIndexDocuments\x12\".hermes.BatchIndexDocumentsRequest\x1a#.hermes.BatchIndexDocumentsResponse\x12\x37\n\x06\x43ommit\x12\x15.hermes.CommitRequest\x1a\x16.hermes.CommitResponse\x12\x43\n\nForceMerge\x12\x19.hermes.ForceMergeRequest\x1a\x1a.hermes.ForceMergeResponse\x12\x46\n\x0b\x44\x65leteIndex\x12\x1a.hermes.DeleteIndexRequest\x1a\x1b.hermes.DeleteIndexResponse\x12\x46\n\x0bListIndexes\x12\x1a.hermes.ListIndexesRequest\x1a\x1b.hermes.ListIndexesResponse\x12[\n\x12RetrainVectorIndex\x12!.hermes.RetrainVectorIndexRequest\x1a\".hermes.RetrainVectorIndexResponseb\x06proto3')
|
|
28
|
-
|
|
29
|
-
_globals = globals()
|
|
30
|
-
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
31
|
-
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'hermes_pb2', _globals)
|
|
32
|
-
if not _descriptor._USE_C_DESCRIPTORS:
|
|
33
|
-
DESCRIPTOR._loaded_options = None
|
|
34
|
-
_globals['_SEARCHHIT_FIELDSENTRY']._loaded_options = None
|
|
35
|
-
_globals['_SEARCHHIT_FIELDSENTRY']._serialized_options = b'8\001'
|
|
36
|
-
_globals['_GETDOCUMENTRESPONSE_FIELDSENTRY']._loaded_options = None
|
|
37
|
-
_globals['_GETDOCUMENTRESPONSE_FIELDSENTRY']._serialized_options = b'8\001'
|
|
38
|
-
_globals['_MULTIVALUECOMBINER']._serialized_start=4072
|
|
39
|
-
_globals['_MULTIVALUECOMBINER']._serialized_end=4201
|
|
40
|
-
_globals['_QUERY']._serialized_start=25
|
|
41
|
-
_globals['_QUERY']._serialized_end=326
|
|
42
|
-
_globals['_SPARSEVECTORQUERY']._serialized_start=329
|
|
43
|
-
_globals['_SPARSEVECTORQUERY']._serialized_end=555
|
|
44
|
-
_globals['_DENSEVECTORQUERY']._serialized_start=558
|
|
45
|
-
_globals['_DENSEVECTORQUERY']._serialized_end=770
|
|
46
|
-
_globals['_TERMQUERY']._serialized_start=772
|
|
47
|
-
_globals['_TERMQUERY']._serialized_end=812
|
|
48
|
-
_globals['_BOOLEANQUERY']._serialized_start=814
|
|
49
|
-
_globals['_BOOLEANQUERY']._serialized_end=921
|
|
50
|
-
_globals['_BOOSTQUERY']._serialized_start=923
|
|
51
|
-
_globals['_BOOSTQUERY']._serialized_end=980
|
|
52
|
-
_globals['_ALLQUERY']._serialized_start=982
|
|
53
|
-
_globals['_ALLQUERY']._serialized_end=992
|
|
54
|
-
_globals['_MATCHQUERY']._serialized_start=994
|
|
55
|
-
_globals['_MATCHQUERY']._serialized_end=1035
|
|
56
|
-
_globals['_RERANKER']._serialized_start=1038
|
|
57
|
-
_globals['_RERANKER']._serialized_end=1243
|
|
58
|
-
_globals['_SEARCHREQUEST']._serialized_start=1246
|
|
59
|
-
_globals['_SEARCHREQUEST']._serialized_end=1402
|
|
60
|
-
_globals['_SEARCHHIT']._serialized_start=1405
|
|
61
|
-
_globals['_SEARCHHIT']._serialized_end=1607
|
|
62
|
-
_globals['_SEARCHHIT_FIELDSENTRY']._serialized_start=1542
|
|
63
|
-
_globals['_SEARCHHIT_FIELDSENTRY']._serialized_end=1607
|
|
64
|
-
_globals['_ORDINALSCORE']._serialized_start=1609
|
|
65
|
-
_globals['_ORDINALSCORE']._serialized_end=1655
|
|
66
|
-
_globals['_FIELDVALUE']._serialized_start=1658
|
|
67
|
-
_globals['_FIELDVALUE']._serialized_end=1877
|
|
68
|
-
_globals['_SPARSEVECTOR']._serialized_start=1879
|
|
69
|
-
_globals['_SPARSEVECTOR']._serialized_end=1926
|
|
70
|
-
_globals['_DENSEVECTOR']._serialized_start=1928
|
|
71
|
-
_globals['_DENSEVECTOR']._serialized_end=1957
|
|
72
|
-
_globals['_SEARCHRESPONSE']._serialized_start=1959
|
|
73
|
-
_globals['_SEARCHRESPONSE']._serialized_end=2085
|
|
74
|
-
_globals['_SEARCHTIMINGS']._serialized_start=2087
|
|
75
|
-
_globals['_SEARCHTIMINGS']._serialized_end=2175
|
|
76
|
-
_globals['_GETDOCUMENTREQUEST']._serialized_start=2177
|
|
77
|
-
_globals['_GETDOCUMENTREQUEST']._serialized_end=2233
|
|
78
|
-
_globals['_GETDOCUMENTRESPONSE']._serialized_start=2236
|
|
79
|
-
_globals['_GETDOCUMENTRESPONSE']._serialized_end=2381
|
|
80
|
-
_globals['_GETDOCUMENTRESPONSE_FIELDSENTRY']._serialized_start=1542
|
|
81
|
-
_globals['_GETDOCUMENTRESPONSE_FIELDSENTRY']._serialized_end=1607
|
|
82
|
-
_globals['_GETINDEXINFOREQUEST']._serialized_start=2383
|
|
83
|
-
_globals['_GETINDEXINFOREQUEST']._serialized_end=2424
|
|
84
|
-
_globals['_GETINDEXINFORESPONSE']._serialized_start=2427
|
|
85
|
-
_globals['_GETINDEXINFORESPONSE']._serialized_end=2568
|
|
86
|
-
_globals['_MEMORYSTATS']._serialized_start=2571
|
|
87
|
-
_globals['_MEMORYSTATS']._serialized_end=2711
|
|
88
|
-
_globals['_INDEXINGBUFFERSTATS']._serialized_start=2714
|
|
89
|
-
_globals['_INDEXINGBUFFERSTATS']._serialized_end=2937
|
|
90
|
-
_globals['_SEGMENTREADERSTATS']._serialized_start=2940
|
|
91
|
-
_globals['_SEGMENTREADERSTATS']._serialized_end=3123
|
|
92
|
-
_globals['_CREATEINDEXREQUEST']._serialized_start=3125
|
|
93
|
-
_globals['_CREATEINDEXREQUEST']._serialized_end=3181
|
|
94
|
-
_globals['_CREATEINDEXRESPONSE']._serialized_start=3183
|
|
95
|
-
_globals['_CREATEINDEXRESPONSE']._serialized_end=3221
|
|
96
|
-
_globals['_FIELDENTRY']._serialized_start=3223
|
|
97
|
-
_globals['_FIELDENTRY']._serialized_end=3284
|
|
98
|
-
_globals['_NAMEDDOCUMENT']._serialized_start=3286
|
|
99
|
-
_globals['_NAMEDDOCUMENT']._serialized_end=3337
|
|
100
|
-
_globals['_BATCHINDEXDOCUMENTSREQUEST']._serialized_start=3339
|
|
101
|
-
_globals['_BATCHINDEXDOCUMENTSREQUEST']._serialized_end=3429
|
|
102
|
-
_globals['_BATCHINDEXDOCUMENTSRESPONSE']._serialized_start=3431
|
|
103
|
-
_globals['_BATCHINDEXDOCUMENTSRESPONSE']._serialized_end=3504
|
|
104
|
-
_globals['_INDEXDOCUMENTREQUEST']._serialized_start=3506
|
|
105
|
-
_globals['_INDEXDOCUMENTREQUEST']._serialized_end=3584
|
|
106
|
-
_globals['_INDEXDOCUMENTSRESPONSE']._serialized_start=3586
|
|
107
|
-
_globals['_INDEXDOCUMENTSRESPONSE']._serialized_end=3633
|
|
108
|
-
_globals['_COMMITREQUEST']._serialized_start=3635
|
|
109
|
-
_globals['_COMMITREQUEST']._serialized_end=3670
|
|
110
|
-
_globals['_COMMITRESPONSE']._serialized_start=3672
|
|
111
|
-
_globals['_COMMITRESPONSE']._serialized_end=3723
|
|
112
|
-
_globals['_FORCEMERGEREQUEST']._serialized_start=3725
|
|
113
|
-
_globals['_FORCEMERGEREQUEST']._serialized_end=3764
|
|
114
|
-
_globals['_FORCEMERGERESPONSE']._serialized_start=3766
|
|
115
|
-
_globals['_FORCEMERGERESPONSE']._serialized_end=3825
|
|
116
|
-
_globals['_DELETEINDEXREQUEST']._serialized_start=3827
|
|
117
|
-
_globals['_DELETEINDEXREQUEST']._serialized_end=3867
|
|
118
|
-
_globals['_DELETEINDEXRESPONSE']._serialized_start=3869
|
|
119
|
-
_globals['_DELETEINDEXRESPONSE']._serialized_end=3907
|
|
120
|
-
_globals['_LISTINDEXESREQUEST']._serialized_start=3909
|
|
121
|
-
_globals['_LISTINDEXESREQUEST']._serialized_end=3929
|
|
122
|
-
_globals['_LISTINDEXESRESPONSE']._serialized_start=3931
|
|
123
|
-
_globals['_LISTINDEXESRESPONSE']._serialized_end=3973
|
|
124
|
-
_globals['_RETRAINVECTORINDEXREQUEST']._serialized_start=3975
|
|
125
|
-
_globals['_RETRAINVECTORINDEXREQUEST']._serialized_end=4022
|
|
126
|
-
_globals['_RETRAINVECTORINDEXRESPONSE']._serialized_start=4024
|
|
127
|
-
_globals['_RETRAINVECTORINDEXRESPONSE']._serialized_end=4069
|
|
128
|
-
_globals['_SEARCHSERVICE']._serialized_start=4204
|
|
129
|
-
_globals['_SEARCHSERVICE']._serialized_end=4423
|
|
130
|
-
_globals['_INDEXSERVICE']._serialized_start=4426
|
|
131
|
-
_globals['_INDEXSERVICE']._serialized_end=5053
|
|
132
|
-
# @@protoc_insertion_point(module_scope)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|