hermes-client-python 1.8.124__tar.gz → 1.8.128__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: hermes-client-python
3
- Version: 1.8.124
3
+ Version: 1.8.128
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
@@ -277,3 +277,63 @@ uv run --group dev python generate_proto.py
277
277
  ## License
278
278
 
279
279
  MIT
280
+
281
+ ## Ranking diagnostics and recall traces
282
+
283
+ Both options default to false and preserve the requested ranking:
284
+
285
+ ```python
286
+ response = await client.search(
287
+ "articles",
288
+ query={
289
+ "fusion": {
290
+ "queries": [
291
+ {
292
+ "name": "title",
293
+ "query": {"match": {"field": "title", "text": "rust"}},
294
+ },
295
+ {"name": "body", "query": {"match": {"field": "body", "text": "rust"}}},
296
+ ]
297
+ }
298
+ },
299
+ include_rrf_scores=True,
300
+ tracing=True,
301
+ )
302
+ for hit in response.hits:
303
+ print(hit.score, hit.rrf_score, hit.rrf_contributions)
304
+ for shard in response.trace.shards:
305
+ for branch in shard.queries:
306
+ print(shard.shard_id, branch.query_name, branch.candidates)
307
+ ```
308
+
309
+ `rrf_score` and per-branch votes use organic nomination ranks merged across all
310
+ shards, independently of L1 or reranker scores. Ranks start at 1. `ordinal=None`
311
+ is document context; ordinal 0 is a real passage. Backfilled and score-only
312
+ features contribute no votes.
313
+
314
+ The trace retains every shard's bounded branch nominations and selected results,
315
+ including candidates absent from the final page, plus query trees and common
316
+ filters. Candidates contain addresses, raw scores and ordinals; stored fields
317
+ are loaded only for returned hits. Tracing does not expand retrieval depth or
318
+ rerun individual Boolean clauses. Oversized diagnostics and unsupported backends
319
+ fail explicitly. See the [scoring and tracing contract](../docs/candidate-rescoring.md).
320
+
321
+ For a named, scoped L1 query, specify the complete scoring formula:
322
+
323
+ ```python
324
+ l1 = {"formula": "0.2 * title + 0.8 * log1p(body) + 3 * rrf"}
325
+ ```
326
+
327
+ `formula` is the only L1 scoring interface. Coefficients, offsets and RRF
328
+ multipliers go in the expression; the former coefficient fields are removed.
329
+ Arithmetic, powers, logarithms, `sqrt`, `abs`, `exp`, `min`/`max` and trigonometry
330
+ are supported. Use `{body.bm25}` for punctuated branch names. `log` and `ln` are
331
+ natural logarithms; `log2` and `log10` select those bases. Missing branch values
332
+ use configured missing defaults, otherwise zero. Backfill remains optional.
333
+
334
+ The formula runs before passage selection and the document combiner. A formula
335
+ using `rrf` makes the broker obtain the complete bounded candidate and passage
336
+ union before global inference. Exports that exceed budgets fail explicitly.
337
+ Expressions are bounded to 4 KiB, 256 tokens and 32 parenthesis levels. Invalid
338
+ variables, invalid syntax and non-finite predictions fail explicitly. Servers
339
+ and brokers must support `formula_v1` (`candidate_scoring_version=3`).
@@ -253,3 +253,63 @@ uv run --group dev python generate_proto.py
253
253
  ## License
254
254
 
255
255
  MIT
256
+
257
+ ## Ranking diagnostics and recall traces
258
+
259
+ Both options default to false and preserve the requested ranking:
260
+
261
+ ```python
262
+ response = await client.search(
263
+ "articles",
264
+ query={
265
+ "fusion": {
266
+ "queries": [
267
+ {
268
+ "name": "title",
269
+ "query": {"match": {"field": "title", "text": "rust"}},
270
+ },
271
+ {"name": "body", "query": {"match": {"field": "body", "text": "rust"}}},
272
+ ]
273
+ }
274
+ },
275
+ include_rrf_scores=True,
276
+ tracing=True,
277
+ )
278
+ for hit in response.hits:
279
+ print(hit.score, hit.rrf_score, hit.rrf_contributions)
280
+ for shard in response.trace.shards:
281
+ for branch in shard.queries:
282
+ print(shard.shard_id, branch.query_name, branch.candidates)
283
+ ```
284
+
285
+ `rrf_score` and per-branch votes use organic nomination ranks merged across all
286
+ shards, independently of L1 or reranker scores. Ranks start at 1. `ordinal=None`
287
+ is document context; ordinal 0 is a real passage. Backfilled and score-only
288
+ features contribute no votes.
289
+
290
+ The trace retains every shard's bounded branch nominations and selected results,
291
+ including candidates absent from the final page, plus query trees and common
292
+ filters. Candidates contain addresses, raw scores and ordinals; stored fields
293
+ are loaded only for returned hits. Tracing does not expand retrieval depth or
294
+ rerun individual Boolean clauses. Oversized diagnostics and unsupported backends
295
+ fail explicitly. See the [scoring and tracing contract](../docs/candidate-rescoring.md).
296
+
297
+ For a named, scoped L1 query, specify the complete scoring formula:
298
+
299
+ ```python
300
+ l1 = {"formula": "0.2 * title + 0.8 * log1p(body) + 3 * rrf"}
301
+ ```
302
+
303
+ `formula` is the only L1 scoring interface. Coefficients, offsets and RRF
304
+ multipliers go in the expression; the former coefficient fields are removed.
305
+ Arithmetic, powers, logarithms, `sqrt`, `abs`, `exp`, `min`/`max` and trigonometry
306
+ are supported. Use `{body.bm25}` for punctuated branch names. `log` and `ln` are
307
+ natural logarithms; `log2` and `log10` select those bases. Missing branch values
308
+ use configured missing defaults, otherwise zero. Backfill remains optional.
309
+
310
+ The formula runs before passage selection and the document combiner. A formula
311
+ using `rrf` makes the broker obtain the complete bounded candidate and passage
312
+ union before global inference. Exports that exceed budgets fail explicitly.
313
+ Expressions are bounded to 4 KiB, 256 tokens and 32 parenthesis levels. Invalid
314
+ variables, invalid syntax and non-finite predictions fail explicitly. Servers
315
+ and brokers must support `formula_v1` (`candidate_scoring_version=3`).
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hermes-client-python"
7
- version = "1.8.124"
7
+ version = "1.8.128"
8
8
  description = "Async Python client for Hermes search server"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -8,18 +8,26 @@ from .types import (
8
8
  BinaryDenseVectorQuery,
9
9
  BooleanQuery,
10
10
  BoostQuery,
11
+ CandidateScores,
11
12
  Combiner,
12
13
  DenseVectorQuery,
13
14
  DocAddress,
14
15
  Document,
16
+ FusionCandidate,
17
+ FusionCandidateList,
15
18
  IndexInfo,
16
19
  MatchQuery,
17
20
  OrdinalScore,
21
+ PassageScores,
22
+ QueryTrace,
18
23
  RangeQuery,
19
24
  Reranker,
25
+ RrfContribution,
20
26
  SearchHit,
21
27
  SearchResponse,
22
28
  SearchTimings,
29
+ SearchTrace,
30
+ ShardSearchTrace,
23
31
  SparseVectorQuery,
24
32
  TermQuery,
25
33
  VectorFieldStats,
@@ -32,6 +40,14 @@ __all__ = [
32
40
  "BooleanQuery",
33
41
  "BoostQuery",
34
42
  "Combiner",
43
+ "CandidateScores",
44
+ "FusionCandidate",
45
+ "FusionCandidateList",
46
+ "PassageScores",
47
+ "RrfContribution",
48
+ "QueryTrace",
49
+ "SearchTrace",
50
+ "ShardSearchTrace",
35
51
  "DenseVectorQuery",
36
52
  "DocAddress",
37
53
  "Document",
@@ -11,18 +11,27 @@ from collections.abc import AsyncIterator
11
11
  from typing import Any
12
12
 
13
13
  import grpc
14
+ from google.protobuf.json_format import MessageToDict
14
15
  from grpc import aio
15
16
 
16
17
  from . import hermes_pb2 as pb
17
18
  from . import hermes_pb2_grpc as pb_grpc
18
19
  from .types import (
20
+ CandidateScores,
19
21
  DocAddress,
20
22
  Document,
23
+ FusionCandidate,
24
+ FusionCandidateList,
21
25
  IndexInfo,
22
26
  OrdinalScore,
27
+ PassageScores,
28
+ QueryTrace,
29
+ RrfContribution,
23
30
  SearchHit,
24
31
  SearchResponse,
25
32
  SearchTimings,
33
+ SearchTrace,
34
+ ShardSearchTrace,
26
35
  VectorFieldStats,
27
36
  )
28
37
 
@@ -214,6 +223,8 @@ class HermesClient:
214
223
  num_docs=response.num_docs,
215
224
  num_segments=response.num_segments,
216
225
  schema=response.schema,
226
+ candidate_scoring_version=response.candidate_scoring_version,
227
+ unprepared_candidate_fields=list(response.unprepared_candidate_fields),
217
228
  vector_stats=vector_stats,
218
229
  )
219
230
 
@@ -385,6 +396,10 @@ class HermesClient:
385
396
  fields_to_load: list[str] | None = None,
386
397
  reranker: dict[str, Any] | None = None,
387
398
  candidate_limit: int = 0,
399
+ l1: dict[str, Any] | None = None,
400
+ score_export: dict[str, Any] | None = None,
401
+ include_rrf_scores: bool = False,
402
+ tracing: bool = False,
388
403
  timeout: float | None = None,
389
404
  ) -> SearchResponse:
390
405
  """Search for documents.
@@ -407,6 +422,10 @@ class HermesClient:
407
422
  reranker: Reranker dict matching proto Reranker message
408
423
  candidate_limit: Shared first-stage candidate pool. Zero uses the
409
424
  result window; explicit values are capped at 2x that window.
425
+ include_rrf_scores: Add independent RRF scores and per-branch votes
426
+ to fusion hits, preserving the requested ranking. Default false.
427
+ tracing: Preserve every shard's bounded branch nominations, query
428
+ provenance and selected results in response.trace. Default false.
410
429
 
411
430
  Returns:
412
431
  SearchResponse with hits
@@ -473,12 +492,34 @@ class HermesClient:
473
492
  fields_to_load=fields_to_load or [],
474
493
  reranker=pb_reranker,
475
494
  candidate_limit=candidate_limit,
495
+ l1=pb.L1Ranking(**l1) if l1 is not None else None,
496
+ include_rrf_scores=include_rrf_scores,
497
+ tracing=tracing,
498
+ score_export=pb.ScoreExport(**score_export)
499
+ if score_export is not None
500
+ else None,
476
501
  )
477
502
 
478
503
  response = await self._search_stub.Search(
479
504
  request, timeout=self._deadline(timeout)
480
505
  )
481
506
 
507
+ expected_l1 = "formula_v1"
508
+ if l1 is not None and response.ranking_method != expected_l1:
509
+ raise RuntimeError(
510
+ f"L1 requires a backend with {expected_l1} ranking semantics; "
511
+ f"received {response.ranking_method!r}"
512
+ )
513
+
514
+ if tracing and not response.HasField("trace"):
515
+ raise RuntimeError("Backend omitted requested search trace; upgrade Hermes")
516
+ if include_rrf_scores and any(
517
+ not hit.HasField("rrf_score") for hit in response.hits
518
+ ):
519
+ raise RuntimeError(
520
+ "Backend omitted requested RRF diagnostics; upgrade Hermes"
521
+ )
522
+
482
523
  hits = [
483
524
  SearchHit(
484
525
  address=DocAddress(
@@ -486,7 +527,32 @@ class HermesClient:
486
527
  doc_id=hit.address.doc_id,
487
528
  ),
488
529
  score=hit.score,
530
+ rrf_score=hit.rrf_score if hit.HasField("rrf_score") else None,
531
+ rrf_contributions=[
532
+ RrfContribution(
533
+ query_index=vote.query_index,
534
+ query_name=vote.query_name,
535
+ rank=vote.rank,
536
+ score=vote.score,
537
+ ordinal=vote.ordinal if vote.HasField("ordinal") else None,
538
+ )
539
+ for vote in hit.rrf_contributions
540
+ ],
489
541
  fields={k: _from_field_value_list(v) for k, v in hit.fields.items()},
542
+ candidate_scores=CandidateScores(
543
+ document=dict(hit.candidate_scores.document),
544
+ passages=[
545
+ PassageScores(
546
+ ordinal=row.ordinal,
547
+ scores=dict(row.scores),
548
+ l1_score=row.l1_score if row.HasField("l1_score") else None,
549
+ )
550
+ for row in hit.candidate_scores.passages
551
+ ],
552
+ scored_passages=hit.candidate_scores.scored_passages,
553
+ )
554
+ if hit.HasField("candidate_scores")
555
+ else None,
490
556
  ordinal_scores=[
491
557
  OrdinalScore(ordinal=os.ordinal, score=os.score)
492
558
  for os in hit.ordinal_scores
@@ -503,13 +569,39 @@ class HermesClient:
503
569
  rerank_us=t.rerank_us,
504
570
  load_us=t.load_us,
505
571
  total_us=t.total_us,
572
+ candidate_scoring_us=t.candidate_scoring_us,
506
573
  )
507
574
 
508
575
  return SearchResponse(
509
576
  hits=hits,
510
577
  total_hits=response.total_hits,
578
+ trace=_from_search_trace(response.trace)
579
+ if response.HasField("trace")
580
+ else None,
511
581
  took_ms=response.took_ms,
512
582
  timings=timings,
583
+ ranking_method=response.ranking_method,
584
+ truncated=response.truncated,
585
+ fusion_candidates=[
586
+ FusionCandidateList(
587
+ query_index=branch.query_index,
588
+ candidates=[
589
+ FusionCandidate(
590
+ address=DocAddress(
591
+ segment_id=hit.address.segment_id,
592
+ doc_id=hit.address.doc_id,
593
+ ),
594
+ score=hit.score,
595
+ ordinal_scores=[
596
+ OrdinalScore(ordinal=score.ordinal, score=score.score)
597
+ for score in hit.ordinal_scores
598
+ ],
599
+ )
600
+ for hit in branch.candidates
601
+ ],
602
+ )
603
+ for branch in response.fusion_candidates
604
+ ],
513
605
  )
514
606
 
515
607
  async def get_document(
@@ -867,22 +959,33 @@ def _build_query(q: dict[str, Any]) -> pb.Query:
867
959
  method = f.get("method", "rrf")
868
960
  if method == "rrf":
869
961
  pb_method = pb.FusionMethod.FUSION_RRF
962
+ elif method == "candidates":
963
+ pb_method = pb.FusionMethod.FUSION_CANDIDATES
870
964
  elif method == "normalized_weighted_sum":
871
965
  pb_method = pb.FusionMethod.FUSION_NORMALIZED_WEIGHTED_SUM
872
966
  else:
873
967
  raise ValueError(
874
968
  f"Unknown fusion method {method!r}: "
875
- "expected 'rrf' or 'normalized_weighted_sum'"
969
+ "expected 'rrf', 'normalized_weighted_sum' or 'candidates'"
876
970
  )
877
971
  return pb.Query(
878
972
  fusion=pb.FusionQuery(
879
973
  queries=[
880
974
  pb.WeightedQuery(
881
975
  query=_build_query(wq["query"]),
882
- weight=wq.get("weight", 1.0),
976
+ weight=wq.get("weight", 0.0 if wq.get("name") else 1.0),
977
+ name=wq.get("name", ""),
978
+ scope={
979
+ None: pb.SCORE_SCOPE_UNSPECIFIED,
980
+ "document": pb.SCORE_SCOPE_DOCUMENT,
981
+ "chunk": pb.SCORE_SCOPE_CHUNK,
982
+ }[wq.get("scope")],
983
+ score_only=wq.get("score_only", False),
883
984
  )
884
985
  for wq in f["queries"]
885
986
  ],
987
+ filters=[_build_query(q) for q in f.get("filters", [])],
988
+ candidate_depth=f.get("candidate_depth", 0),
886
989
  method=pb_method,
887
990
  rrf_k=f.get("rrf_k", 0),
888
991
  # Chunk combiner; unset -> MAX server-side (chunk-level fusion)
@@ -923,3 +1026,53 @@ def _build_reranker(r: dict[str, Any]) -> pb.Reranker:
923
1026
  binary_vector=r.get("binary_vector", b""),
924
1027
  rrf_k=r.get("rrf_k", 0),
925
1028
  )
1029
+
1030
+
1031
+ def _from_trace_candidate(candidate: pb.FusionCandidate) -> FusionCandidate:
1032
+ return FusionCandidate(
1033
+ address=DocAddress(candidate.address.segment_id, candidate.address.doc_id),
1034
+ score=candidate.score,
1035
+ ordinal_scores=[
1036
+ OrdinalScore(row.ordinal, row.score) for row in candidate.ordinal_scores
1037
+ ],
1038
+ )
1039
+
1040
+
1041
+ def _from_search_trace(trace: pb.SearchTrace) -> SearchTrace:
1042
+ return SearchTrace(
1043
+ shards=[
1044
+ ShardSearchTrace(
1045
+ shard_id=shard.shard_id,
1046
+ backend_id=shard.backend_id,
1047
+ index_name=shard.index_name,
1048
+ ranking_method=shard.ranking_method,
1049
+ truncated=shard.truncated,
1050
+ filters=[
1051
+ MessageToDict(query, preserving_proto_field_name=True)
1052
+ for query in shard.filters
1053
+ ],
1054
+ selected=[
1055
+ _from_trace_candidate(candidate) for candidate in shard.selected
1056
+ ],
1057
+ queries=[
1058
+ QueryTrace(
1059
+ query_index=branch.query_index,
1060
+ query_name=branch.query_name,
1061
+ query=MessageToDict(
1062
+ branch.query, preserving_proto_field_name=True
1063
+ ),
1064
+ scope=branch.scope,
1065
+ score_only=branch.score_only,
1066
+ candidate_depth=branch.candidate_depth,
1067
+ total_seen=branch.total_seen,
1068
+ candidates=[
1069
+ _from_trace_candidate(candidate)
1070
+ for candidate in branch.candidates
1071
+ ],
1072
+ )
1073
+ for branch in shard.queries
1074
+ ],
1075
+ )
1076
+ for shard in trace.shards
1077
+ ]
1078
+ )
@@ -0,0 +1,206 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # NO CHECKED-IN PROTOBUF GENCODE
3
+ # source: hermes.proto
4
+ # Protobuf Python Version: 6.31.1
5
+ """Generated protocol buffer code."""
6
+
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
+
13
+ _runtime_version.ValidateProtobufRuntimeVersion(
14
+ _runtime_version.Domain.PUBLIC, 6, 31, 1, "", "hermes.proto"
15
+ )
16
+ # @@protoc_insertion_point(imports)
17
+
18
+ _sym_db = _symbol_database.Default()
19
+
20
+
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
22
+ b'\n\x0chermes.proto\x12\x06hermes"\x86\x04\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\x12#\n\x05range\x18\x08 \x01(\x0b\x32\x12.hermes.RangeQueryH\x00\x12%\n\x06prefix\x18\t \x01(\x0b\x32\x13.hermes.PrefixQueryH\x00\x12=\n\x13\x62inary_dense_vector\x18\n \x01(\x0b\x32\x1e.hermes.BinaryDenseVectorQueryH\x00\x12%\n\x06\x66usion\x18\x0b \x01(\x0b\x32\x13.hermes.FusionQueryH\x00\x12%\n\x06phrase\x18\x0c \x01(\x0b\x32\x13.hermes.PhraseQueryH\x00\x42\x07\n\x05query"\x82\x01\n\rWeightedQuery\x12\x1c\n\x05query\x18\x01 \x01(\x0b\x32\r.hermes.Query\x12\x0e\n\x06weight\x18\x02 \x01(\x02\x12\x0c\n\x04name\x18\x03 \x01(\t\x12!\n\x05scope\x18\x04 \x01(\x0e\x32\x12.hermes.ScoreScope\x12\x12\n\nscore_only\x18\x05 \x01(\x08"\xd1\x01\n\x0b\x46usionQuery\x12&\n\x07queries\x18\x01 \x03(\x0b\x32\x15.hermes.WeightedQuery\x12$\n\x06method\x18\x02 \x01(\x0e\x32\x14.hermes.FusionMethod\x12\r\n\x05rrf_k\x18\x03 \x01(\x02\x12,\n\x08\x63ombiner\x18\x05 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner\x12\x1e\n\x07\x66ilters\x18\x06 \x03(\x0b\x32\r.hermes.Query\x12\x17\n\x0f\x63\x61ndidate_depth\x18\x07 \x01(\r"\xf3\x01\n\tL1Ranking\x12\x15\n\x08\x62\x61\x63kfill\x18\x04 \x01(\x08H\x00\x88\x01\x01\x12<\n\x0emissing_values\x18\x05 \x03(\x0b\x32$.hermes.L1Ranking.MissingValuesEntry\x12\x0f\n\x07\x66ormula\x18\x07 \x01(\t\x1a\x34\n\x12MissingValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x42\x0b\n\t_backfillJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x06\x10\x07R\x07weightsR\x04\x62iasR\ntransformsR\nrrf_weight"B\n\x0bScoreExport\x12\x1d\n\x15passages_per_document\x18\x01 \x01(\r\x12\x14\n\x0c\x61ll_passages\x18\x02 \x01(\x08"\xcb\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\x12\x16\n\tlsp_gamma\x18\r \x01(\rH\x00\x88\x01\x01\x42\x0c\n\n_lsp_gamma"\xbd\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,\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"\xb3\x01\n\x16\x42inaryDenseVectorQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06vector\x18\x02 \x01(\x0c\x12,\n\x08\x63ombiner\x18\x03 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner\x12\x1c\n\x14\x63ombiner_temperature\x18\x04 \x01(\x02\x12\x16\n\x0e\x63ombiner_top_k\x18\x05 \x01(\r\x12\x16\n\x0e\x63ombiner_decay\x18\x06 \x01(\x02"@\n\tTermQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04term\x18\x02 \x01(\t\x12\x16\n\x0etokenizer_hint\x18\x03 \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"\xe7\x01\n\nRangeQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x14\n\x07min_u64\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07max_u64\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12\x14\n\x07min_i64\x18\x04 \x01(\x03H\x02\x88\x01\x01\x12\x14\n\x07max_i64\x18\x05 \x01(\x03H\x03\x88\x01\x01\x12\x14\n\x07min_f64\x18\x06 \x01(\x01H\x04\x88\x01\x01\x12\x14\n\x07max_f64\x18\x07 \x01(\x01H\x05\x88\x01\x01\x42\n\n\x08_min_u64B\n\n\x08_max_u64B\n\n\x08_min_i64B\n\n\x08_max_i64B\n\n\x08_min_f64B\n\n\x08_max_f64"\x9d\x01\n\nMatchQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x16\n\x0etokenizer_hint\x18\x03 \x01(\t\x12\x18\n\x10proximity_weight\x18\x04 \x01(\x02\x12\x18\n\x10proximity_window\x18\x05 \x01(\r\x12\x13\n\x0bheap_factor\x18\x06 \x01(\x02\x12\x11\n\tmax_terms\x18\x07 \x01(\r"P\n\x0bPhraseQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x0c\n\x04slop\x18\x03 \x01(\r\x12\x16\n\x0etokenizer_hint\x18\x04 \x01(\t",\n\x0bPrefixQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06prefix\x18\x02 \x01(\t"\xe4\x01\n\x08Reranker\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06vector\x18\x02 \x03(\x02\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\x12\x15\n\rbinary_vector\x18\t \x01(\x0c\x12\r\n\x05rrf_k\x18\n \x01(\x02"\xeb\x02\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\x17\n\x0f\x63\x61ndidate_limit\x18\x07 \x01(\r\x12\x16\n\x0etime_budget_ms\x18\x08 \x01(\x04\x12%\n\ntext_stats\x18\t \x01(\x0b\x32\x11.hermes.TextStats\x12\x1d\n\x02l1\x18\n \x01(\x0b\x32\x11.hermes.L1Ranking\x12)\n\x0cscore_export\x18\x0b \x01(\x0b\x32\x13.hermes.ScoreExport\x12\x1a\n\x12include_rrf_scores\x18\x0c \x01(\x08\x12\x0f\n\x07tracing\x18\r \x01(\x08"G\n\x13GetTextStatsRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x1c\n\x05query\x18\x02 \x01(\x0b\x32\r.hermes.Query"8\n\x14GetTextStatsResponse\x12 \n\x05stats\x18\x01 \x01(\x0b\x32\x11.hermes.TextStats"G\n\tTextStats\x12\x12\n\ntotal_docs\x18\x01 \x01(\x04\x12&\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x16.hermes.TextFieldStats"i\n\x0eTextFieldStats\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x13\n\x0b\x63orpus_size\x18\x02 \x01(\x04\x12\x0f\n\x07\x61vg_len\x18\x03 \x01(\x02\x12"\n\x05terms\x18\x04 \x03(\x0b\x32\x13.hermes.TermDocFreq"-\n\x0bTermDocFreq\x12\x0c\n\x04term\x18\x01 \x01(\x0c\x12\x10\n\x08\x64oc_freq\x18\x02 \x01(\x04"0\n\nDocAddress\x12\x12\n\nsegment_id\x18\x01 \x01(\t\x12\x0e\n\x06\x64oc_id\x18\x02 \x01(\r"\xf0\x02\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\x12\x31\n\x10\x63\x61ndidate_scores\x18\x05 \x01(\x0b\x32\x17.hermes.CandidateScores\x12\x16\n\trrf_score\x18\x06 \x01(\x02H\x00\x88\x01\x01\x12\x32\n\x11rrf_contributions\x18\x07 \x03(\x0b\x32\x17.hermes.RrfContribution\x1a\x45\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.hermes.FieldValueList:\x02\x38\x01\x42\x0c\n\n_rrf_score"y\n\x0fRrfContribution\x12\x13\n\x0bquery_index\x18\x01 \x01(\r\x12\x12\n\nquery_name\x18\x02 \x01(\t\x12\x0c\n\x04rank\x18\x03 \x01(\r\x12\r\n\x05score\x18\x04 \x01(\x02\x12\x14\n\x07ordinal\x18\x05 \x01(\rH\x00\x88\x01\x01\x42\n\n\x08_ordinal"\xbd\x01\n\x0f\x43\x61ndidateScores\x12\x37\n\x08\x64ocument\x18\x01 \x03(\x0b\x32%.hermes.CandidateScores.DocumentEntry\x12\'\n\x08passages\x18\x02 \x03(\x0b\x32\x15.hermes.PassageScores\x12\x17\n\x0fscored_passages\x18\x03 \x01(\r\x1a/\n\rDocumentEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01"\xa6\x01\n\rPassageScores\x12\x0f\n\x07ordinal\x18\x01 \x01(\r\x12\x31\n\x06scores\x18\x02 \x03(\x0b\x32!.hermes.PassageScores.ScoresEntry\x12\x15\n\x08l1_score\x18\x03 \x01(\x02H\x00\x88\x01\x01\x1a-\n\x0bScoresEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x42\x0b\n\t_l1_score"4\n\x0e\x46ieldValueList\x12"\n\x06values\x18\x01 \x03(\x0b\x32\x12.hermes.FieldValue".\n\x0cOrdinalScore\x12\x0f\n\x07ordinal\x18\x01 \x01(\r\x12\r\n\x05score\x18\x02 \x01(\x02"\xfa\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\x12\x1d\n\x13\x62inary_dense_vector\x18\t \x01(\x0cH\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"\x85\x02\n\x0eSearchResponse\x12\x1f\n\x04hits\x18\x01 \x03(\x0b\x32\x11.hermes.SearchHit\x12\x12\n\ntotal_hits\x18\x02 \x01(\x04\x12\x0f\n\x07took_ms\x18\x03 \x01(\x04\x12&\n\x07timings\x18\x04 \x01(\x0b\x32\x15.hermes.SearchTimings\x12\x11\n\ttruncated\x18\x05 \x01(\x08\x12\x16\n\x0eranking_method\x18\x06 \x01(\t\x12\x36\n\x11\x66usion_candidates\x18\x07 \x03(\x0b\x32\x1b.hermes.FusionCandidateList\x12"\n\x05trace\x18\x08 \x01(\x0b\x32\x13.hermes.SearchTrace"7\n\x0bSearchTrace\x12(\n\x06shards\x18\x01 \x03(\x0b\x32\x18.hermes.ShardSearchTrace"\xe7\x01\n\x10ShardSearchTrace\x12\x10\n\x08shard_id\x18\x01 \x01(\t\x12\x12\n\nbackend_id\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12#\n\x07queries\x18\x04 \x03(\x0b\x32\x12.hermes.QueryTrace\x12)\n\x08selected\x18\x05 \x03(\x0b\x32\x17.hermes.FusionCandidate\x12\x16\n\x0eranking_method\x18\x06 \x01(\t\x12\x11\n\ttruncated\x18\x07 \x01(\x08\x12\x1e\n\x07\x66ilters\x18\x08 \x03(\x0b\x32\r.hermes.Query"\xe4\x01\n\nQueryTrace\x12\x13\n\x0bquery_index\x18\x01 \x01(\r\x12\x12\n\nquery_name\x18\x02 \x01(\t\x12\x1c\n\x05query\x18\x03 \x01(\x0b\x32\r.hermes.Query\x12!\n\x05scope\x18\x04 \x01(\x0e\x32\x12.hermes.ScoreScope\x12\x12\n\nscore_only\x18\x05 \x01(\x08\x12\x17\n\x0f\x63\x61ndidate_depth\x18\x06 \x01(\r\x12\x12\n\ntotal_seen\x18\x07 \x01(\r\x12+\n\ncandidates\x18\x08 \x03(\x0b\x32\x17.hermes.FusionCandidate"W\n\x13\x46usionCandidateList\x12\x13\n\x0bquery_index\x18\x01 \x01(\r\x12+\n\ncandidates\x18\x02 \x03(\x0b\x32\x17.hermes.FusionCandidate"s\n\x0f\x46usionCandidate\x12#\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32\x12.hermes.DocAddress\x12\r\n\x05score\x18\x02 \x01(\x02\x12,\n\x0eordinal_scores\x18\x03 \x03(\x0b\x32\x14.hermes.OrdinalScore"v\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\x12\x1c\n\x14\x63\x61ndidate_scoring_us\x18\x05 \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"\x95\x01\n\x13GetDocumentResponse\x12\x37\n\x06\x66ields\x18\x01 \x03(\x0b\x32\'.hermes.GetDocumentResponse.FieldsEntry\x1a\x45\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.hermes.FieldValueList:\x02\x38\x01")\n\x13GetIndexInfoRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t"\xb1\x02\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\x12*\n\x0btext_fields\x18\x07 \x03(\x0b\x32\x15.hermes.TextFieldInfo\x12!\n\x19\x63\x61ndidate_scoring_version\x18\x08 \x01(\r\x12#\n\x1bunprepared_candidate_fields\x18\t \x03(\t"y\n\rTextFieldInfo\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0f\n\x07lexical\x18\x02 \x01(\x08\x12\x12\n\nhint_field\x18\x03 \x01(\t\x12\x10\n\x08variants\x18\x04 \x01(\x08\x12\x11\n\tpositions\x18\x05 \x01(\x08\x12\x0f\n\x07\x63hunked\x18\x06 \x01(\x08"\x83\x01\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\x12\x1c\n\x14\x61vg_terms_per_vector\x18\x05 \x01(\x02"\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"p\n\x1b\x42\x61tchIndexDocumentsResponse\x12\x15\n\rindexed_count\x18\x01 \x01(\r\x12\x13\n\x0b\x65rror_count\x18\x02 \x01(\r\x12%\n\x06\x65rrors\x18\x03 \x03(\x0b\x32\x15.hermes.DocumentError"-\n\rDocumentError\x12\r\n\x05index\x18\x01 \x01(\r\x12\r\n\x05\x65rror\x18\x02 \x01(\t"N\n\x14IndexDocumentRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12"\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x12.hermes.FieldEntry"V\n\x16IndexDocumentsResponse\x12\x15\n\rindexed_count\x18\x01 \x01(\r\x12%\n\x06\x65rrors\x18\x02 \x03(\x0b\x32\x15.hermes.DocumentError"#\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"W\n\x17\x41lterVectorIndexRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x12\n\nfield_name\x18\x02 \x01(\t\x12\x14\n\x0c\x66ield_schema\x18\x03 \x01(\t"h\n\x18\x41lterVectorIndexResponse\x12\x1e\n\x16publication_generation\x18\x01 \x01(\x04\x12,\n\x05state\x18\x02 \x01(\x0e\x32\x1d.hermes.VectorIndexAlterState"$\n\x0eReorderRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t"8\n\x0fReorderResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x14\n\x0cnum_segments\x18\x02 \x01(\r*Y\n\x0c\x46usionMethod\x12\x0e\n\nFUSION_RRF\x10\x00\x12"\n\x1e\x46USION_NORMALIZED_WEIGHTED_SUM\x10\x01\x12\x15\n\x11\x46USION_CANDIDATES\x10\x02*Z\n\nScoreScope\x12\x1b\n\x17SCORE_SCOPE_UNSPECIFIED\x10\x00\x12\x18\n\x14SCORE_SCOPE_DOCUMENT\x10\x01\x12\x15\n\x11SCORE_SCOPE_CHUNK\x10\x02*\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*\xbf\x01\n\x15VectorIndexAlterState\x12(\n$VECTOR_INDEX_ALTER_STATE_UNSPECIFIED\x10\x00\x12"\n\x1eVECTOR_INDEX_ALTER_STATE_BUILT\x10\x01\x12*\n&VECTOR_INDEX_ALTER_STATE_DEFERRED_FLAT\x10\x02\x12,\n(VECTOR_INDEX_ALTER_STATE_PARAMETERS_ONLY\x10\x03\x32\xa6\x02\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.GetIndexInfoResponse\x12I\n\x0cGetTextStats\x12\x1b.hermes.GetTextStatsRequest\x1a\x1c.hermes.GetTextStatsResponse2\x86\x06\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:\n\x07Reorder\x12\x16.hermes.ReorderRequest\x1a\x17.hermes.ReorderResponse\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.RetrainVectorIndexResponse\x12U\n\x10\x41lterVectorIndex\x12\x1f.hermes.AlterVectorIndexRequest\x1a .hermes.AlterVectorIndexResponseb\x06proto3'
23
+ )
24
+
25
+ _globals = globals()
26
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
27
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "hermes_pb2", _globals)
28
+ if not _descriptor._USE_C_DESCRIPTORS:
29
+ DESCRIPTOR._loaded_options = None
30
+ _globals["_L1RANKING_MISSINGVALUESENTRY"]._loaded_options = None
31
+ _globals["_L1RANKING_MISSINGVALUESENTRY"]._serialized_options = b"8\001"
32
+ _globals["_SEARCHHIT_FIELDSENTRY"]._loaded_options = None
33
+ _globals["_SEARCHHIT_FIELDSENTRY"]._serialized_options = b"8\001"
34
+ _globals["_CANDIDATESCORES_DOCUMENTENTRY"]._loaded_options = None
35
+ _globals["_CANDIDATESCORES_DOCUMENTENTRY"]._serialized_options = b"8\001"
36
+ _globals["_PASSAGESCORES_SCORESENTRY"]._loaded_options = None
37
+ _globals["_PASSAGESCORES_SCORESENTRY"]._serialized_options = b"8\001"
38
+ _globals["_GETDOCUMENTRESPONSE_FIELDSENTRY"]._loaded_options = None
39
+ _globals["_GETDOCUMENTRESPONSE_FIELDSENTRY"]._serialized_options = b"8\001"
40
+ _globals["_FUSIONMETHOD"]._serialized_start = 8843
41
+ _globals["_FUSIONMETHOD"]._serialized_end = 8932
42
+ _globals["_SCORESCOPE"]._serialized_start = 8934
43
+ _globals["_SCORESCOPE"]._serialized_end = 9024
44
+ _globals["_MULTIVALUECOMBINER"]._serialized_start = 9027
45
+ _globals["_MULTIVALUECOMBINER"]._serialized_end = 9156
46
+ _globals["_VECTORINDEXALTERSTATE"]._serialized_start = 9159
47
+ _globals["_VECTORINDEXALTERSTATE"]._serialized_end = 9350
48
+ _globals["_QUERY"]._serialized_start = 25
49
+ _globals["_QUERY"]._serialized_end = 543
50
+ _globals["_WEIGHTEDQUERY"]._serialized_start = 546
51
+ _globals["_WEIGHTEDQUERY"]._serialized_end = 676
52
+ _globals["_FUSIONQUERY"]._serialized_start = 679
53
+ _globals["_FUSIONQUERY"]._serialized_end = 888
54
+ _globals["_L1RANKING"]._serialized_start = 891
55
+ _globals["_L1RANKING"]._serialized_end = 1134
56
+ _globals["_L1RANKING_MISSINGVALUESENTRY"]._serialized_start = 1006
57
+ _globals["_L1RANKING_MISSINGVALUESENTRY"]._serialized_end = 1058
58
+ _globals["_SCOREEXPORT"]._serialized_start = 1136
59
+ _globals["_SCOREEXPORT"]._serialized_end = 1202
60
+ _globals["_SPARSEVECTORQUERY"]._serialized_start = 1205
61
+ _globals["_SPARSEVECTORQUERY"]._serialized_end = 1536
62
+ _globals["_DENSEVECTORQUERY"]._serialized_start = 1539
63
+ _globals["_DENSEVECTORQUERY"]._serialized_end = 1728
64
+ _globals["_BINARYDENSEVECTORQUERY"]._serialized_start = 1731
65
+ _globals["_BINARYDENSEVECTORQUERY"]._serialized_end = 1910
66
+ _globals["_TERMQUERY"]._serialized_start = 1912
67
+ _globals["_TERMQUERY"]._serialized_end = 1976
68
+ _globals["_BOOLEANQUERY"]._serialized_start = 1978
69
+ _globals["_BOOLEANQUERY"]._serialized_end = 2085
70
+ _globals["_BOOSTQUERY"]._serialized_start = 2087
71
+ _globals["_BOOSTQUERY"]._serialized_end = 2144
72
+ _globals["_ALLQUERY"]._serialized_start = 2146
73
+ _globals["_ALLQUERY"]._serialized_end = 2156
74
+ _globals["_RANGEQUERY"]._serialized_start = 2159
75
+ _globals["_RANGEQUERY"]._serialized_end = 2390
76
+ _globals["_MATCHQUERY"]._serialized_start = 2393
77
+ _globals["_MATCHQUERY"]._serialized_end = 2550
78
+ _globals["_PHRASEQUERY"]._serialized_start = 2552
79
+ _globals["_PHRASEQUERY"]._serialized_end = 2632
80
+ _globals["_PREFIXQUERY"]._serialized_start = 2634
81
+ _globals["_PREFIXQUERY"]._serialized_end = 2678
82
+ _globals["_RERANKER"]._serialized_start = 2681
83
+ _globals["_RERANKER"]._serialized_end = 2909
84
+ _globals["_SEARCHREQUEST"]._serialized_start = 2912
85
+ _globals["_SEARCHREQUEST"]._serialized_end = 3275
86
+ _globals["_GETTEXTSTATSREQUEST"]._serialized_start = 3277
87
+ _globals["_GETTEXTSTATSREQUEST"]._serialized_end = 3348
88
+ _globals["_GETTEXTSTATSRESPONSE"]._serialized_start = 3350
89
+ _globals["_GETTEXTSTATSRESPONSE"]._serialized_end = 3406
90
+ _globals["_TEXTSTATS"]._serialized_start = 3408
91
+ _globals["_TEXTSTATS"]._serialized_end = 3479
92
+ _globals["_TEXTFIELDSTATS"]._serialized_start = 3481
93
+ _globals["_TEXTFIELDSTATS"]._serialized_end = 3586
94
+ _globals["_TERMDOCFREQ"]._serialized_start = 3588
95
+ _globals["_TERMDOCFREQ"]._serialized_end = 3633
96
+ _globals["_DOCADDRESS"]._serialized_start = 3635
97
+ _globals["_DOCADDRESS"]._serialized_end = 3683
98
+ _globals["_SEARCHHIT"]._serialized_start = 3686
99
+ _globals["_SEARCHHIT"]._serialized_end = 4054
100
+ _globals["_SEARCHHIT_FIELDSENTRY"]._serialized_start = 3971
101
+ _globals["_SEARCHHIT_FIELDSENTRY"]._serialized_end = 4040
102
+ _globals["_RRFCONTRIBUTION"]._serialized_start = 4056
103
+ _globals["_RRFCONTRIBUTION"]._serialized_end = 4177
104
+ _globals["_CANDIDATESCORES"]._serialized_start = 4180
105
+ _globals["_CANDIDATESCORES"]._serialized_end = 4369
106
+ _globals["_CANDIDATESCORES_DOCUMENTENTRY"]._serialized_start = 4322
107
+ _globals["_CANDIDATESCORES_DOCUMENTENTRY"]._serialized_end = 4369
108
+ _globals["_PASSAGESCORES"]._serialized_start = 4372
109
+ _globals["_PASSAGESCORES"]._serialized_end = 4538
110
+ _globals["_PASSAGESCORES_SCORESENTRY"]._serialized_start = 4480
111
+ _globals["_PASSAGESCORES_SCORESENTRY"]._serialized_end = 4525
112
+ _globals["_FIELDVALUELIST"]._serialized_start = 4540
113
+ _globals["_FIELDVALUELIST"]._serialized_end = 4592
114
+ _globals["_ORDINALSCORE"]._serialized_start = 4594
115
+ _globals["_ORDINALSCORE"]._serialized_end = 4640
116
+ _globals["_FIELDVALUE"]._serialized_start = 4643
117
+ _globals["_FIELDVALUE"]._serialized_end = 4893
118
+ _globals["_SPARSEVECTOR"]._serialized_start = 4895
119
+ _globals["_SPARSEVECTOR"]._serialized_end = 4942
120
+ _globals["_DENSEVECTOR"]._serialized_start = 4944
121
+ _globals["_DENSEVECTOR"]._serialized_end = 4973
122
+ _globals["_SEARCHRESPONSE"]._serialized_start = 4976
123
+ _globals["_SEARCHRESPONSE"]._serialized_end = 5237
124
+ _globals["_SEARCHTRACE"]._serialized_start = 5239
125
+ _globals["_SEARCHTRACE"]._serialized_end = 5294
126
+ _globals["_SHARDSEARCHTRACE"]._serialized_start = 5297
127
+ _globals["_SHARDSEARCHTRACE"]._serialized_end = 5528
128
+ _globals["_QUERYTRACE"]._serialized_start = 5531
129
+ _globals["_QUERYTRACE"]._serialized_end = 5759
130
+ _globals["_FUSIONCANDIDATELIST"]._serialized_start = 5761
131
+ _globals["_FUSIONCANDIDATELIST"]._serialized_end = 5848
132
+ _globals["_FUSIONCANDIDATE"]._serialized_start = 5850
133
+ _globals["_FUSIONCANDIDATE"]._serialized_end = 5965
134
+ _globals["_SEARCHTIMINGS"]._serialized_start = 5967
135
+ _globals["_SEARCHTIMINGS"]._serialized_end = 6085
136
+ _globals["_GETDOCUMENTREQUEST"]._serialized_start = 6087
137
+ _globals["_GETDOCUMENTREQUEST"]._serialized_end = 6164
138
+ _globals["_GETDOCUMENTRESPONSE"]._serialized_start = 6167
139
+ _globals["_GETDOCUMENTRESPONSE"]._serialized_end = 6316
140
+ _globals["_GETDOCUMENTRESPONSE_FIELDSENTRY"]._serialized_start = 3971
141
+ _globals["_GETDOCUMENTRESPONSE_FIELDSENTRY"]._serialized_end = 4040
142
+ _globals["_GETINDEXINFOREQUEST"]._serialized_start = 6318
143
+ _globals["_GETINDEXINFOREQUEST"]._serialized_end = 6359
144
+ _globals["_GETINDEXINFORESPONSE"]._serialized_start = 6362
145
+ _globals["_GETINDEXINFORESPONSE"]._serialized_end = 6667
146
+ _globals["_TEXTFIELDINFO"]._serialized_start = 6669
147
+ _globals["_TEXTFIELDINFO"]._serialized_end = 6790
148
+ _globals["_VECTORFIELDSTATS"]._serialized_start = 6793
149
+ _globals["_VECTORFIELDSTATS"]._serialized_end = 6924
150
+ _globals["_MEMORYSTATS"]._serialized_start = 6927
151
+ _globals["_MEMORYSTATS"]._serialized_end = 7067
152
+ _globals["_INDEXINGBUFFERSTATS"]._serialized_start = 7070
153
+ _globals["_INDEXINGBUFFERSTATS"]._serialized_end = 7293
154
+ _globals["_SEGMENTREADERSTATS"]._serialized_start = 7296
155
+ _globals["_SEGMENTREADERSTATS"]._serialized_end = 7479
156
+ _globals["_CREATEINDEXREQUEST"]._serialized_start = 7481
157
+ _globals["_CREATEINDEXREQUEST"]._serialized_end = 7537
158
+ _globals["_CREATEINDEXRESPONSE"]._serialized_start = 7539
159
+ _globals["_CREATEINDEXRESPONSE"]._serialized_end = 7577
160
+ _globals["_FIELDENTRY"]._serialized_start = 7579
161
+ _globals["_FIELDENTRY"]._serialized_end = 7640
162
+ _globals["_NAMEDDOCUMENT"]._serialized_start = 7642
163
+ _globals["_NAMEDDOCUMENT"]._serialized_end = 7693
164
+ _globals["_BATCHINDEXDOCUMENTSREQUEST"]._serialized_start = 7695
165
+ _globals["_BATCHINDEXDOCUMENTSREQUEST"]._serialized_end = 7785
166
+ _globals["_BATCHINDEXDOCUMENTSRESPONSE"]._serialized_start = 7787
167
+ _globals["_BATCHINDEXDOCUMENTSRESPONSE"]._serialized_end = 7899
168
+ _globals["_DOCUMENTERROR"]._serialized_start = 7901
169
+ _globals["_DOCUMENTERROR"]._serialized_end = 7946
170
+ _globals["_INDEXDOCUMENTREQUEST"]._serialized_start = 7948
171
+ _globals["_INDEXDOCUMENTREQUEST"]._serialized_end = 8026
172
+ _globals["_INDEXDOCUMENTSRESPONSE"]._serialized_start = 8028
173
+ _globals["_INDEXDOCUMENTSRESPONSE"]._serialized_end = 8114
174
+ _globals["_COMMITREQUEST"]._serialized_start = 8116
175
+ _globals["_COMMITREQUEST"]._serialized_end = 8151
176
+ _globals["_COMMITRESPONSE"]._serialized_start = 8153
177
+ _globals["_COMMITRESPONSE"]._serialized_end = 8204
178
+ _globals["_FORCEMERGEREQUEST"]._serialized_start = 8206
179
+ _globals["_FORCEMERGEREQUEST"]._serialized_end = 8245
180
+ _globals["_FORCEMERGERESPONSE"]._serialized_start = 8247
181
+ _globals["_FORCEMERGERESPONSE"]._serialized_end = 8306
182
+ _globals["_DELETEINDEXREQUEST"]._serialized_start = 8308
183
+ _globals["_DELETEINDEXREQUEST"]._serialized_end = 8348
184
+ _globals["_DELETEINDEXRESPONSE"]._serialized_start = 8350
185
+ _globals["_DELETEINDEXRESPONSE"]._serialized_end = 8388
186
+ _globals["_LISTINDEXESREQUEST"]._serialized_start = 8390
187
+ _globals["_LISTINDEXESREQUEST"]._serialized_end = 8410
188
+ _globals["_LISTINDEXESRESPONSE"]._serialized_start = 8412
189
+ _globals["_LISTINDEXESRESPONSE"]._serialized_end = 8454
190
+ _globals["_RETRAINVECTORINDEXREQUEST"]._serialized_start = 8456
191
+ _globals["_RETRAINVECTORINDEXREQUEST"]._serialized_end = 8503
192
+ _globals["_RETRAINVECTORINDEXRESPONSE"]._serialized_start = 8505
193
+ _globals["_RETRAINVECTORINDEXRESPONSE"]._serialized_end = 8550
194
+ _globals["_ALTERVECTORINDEXREQUEST"]._serialized_start = 8552
195
+ _globals["_ALTERVECTORINDEXREQUEST"]._serialized_end = 8639
196
+ _globals["_ALTERVECTORINDEXRESPONSE"]._serialized_start = 8641
197
+ _globals["_ALTERVECTORINDEXRESPONSE"]._serialized_end = 8745
198
+ _globals["_REORDERREQUEST"]._serialized_start = 8747
199
+ _globals["_REORDERREQUEST"]._serialized_end = 8783
200
+ _globals["_REORDERRESPONSE"]._serialized_start = 8785
201
+ _globals["_REORDERRESPONSE"]._serialized_end = 8841
202
+ _globals["_SEARCHSERVICE"]._serialized_start = 9353
203
+ _globals["_SEARCHSERVICE"]._serialized_end = 9647
204
+ _globals["_INDEXSERVICE"]._serialized_start = 9650
205
+ _globals["_INDEXSERVICE"]._serialized_end = 10424
206
+ # @@protoc_insertion_point(module_scope)
@@ -157,6 +157,29 @@ class OrdinalScore:
157
157
  score: float
158
158
 
159
159
 
160
+ @dataclass
161
+ class PassageScores:
162
+ ordinal: int
163
+ scores: dict[str, float]
164
+ l1_score: float | None = None
165
+
166
+
167
+ @dataclass
168
+ class CandidateScores:
169
+ document: dict[str, float]
170
+ passages: list[PassageScores]
171
+ scored_passages: int
172
+
173
+
174
+ @dataclass
175
+ class RrfContribution:
176
+ query_index: int
177
+ query_name: str
178
+ rank: int
179
+ score: float
180
+ ordinal: int | None = None
181
+
182
+
160
183
  @dataclass
161
184
  class SearchHit:
162
185
  """A single search result."""
@@ -165,6 +188,9 @@ class SearchHit:
165
188
  score: float
166
189
  fields: dict[str, Any] = field(default_factory=dict)
167
190
  ordinal_scores: list[OrdinalScore] = field(default_factory=list)
191
+ candidate_scores: CandidateScores | None = None
192
+ rrf_score: float | None = None
193
+ rrf_contributions: list[RrfContribution] = field(default_factory=list)
168
194
 
169
195
 
170
196
  @dataclass
@@ -175,6 +201,49 @@ class SearchTimings:
175
201
  rerank_us: int
176
202
  load_us: int
177
203
  total_us: int
204
+ candidate_scoring_us: int = 0
205
+
206
+
207
+ @dataclass
208
+ class FusionCandidate:
209
+ address: DocAddress
210
+ score: float
211
+ ordinal_scores: list[OrdinalScore] = field(default_factory=list)
212
+
213
+
214
+ @dataclass
215
+ class FusionCandidateList:
216
+ query_index: int
217
+ candidates: list[FusionCandidate] = field(default_factory=list)
218
+
219
+
220
+ @dataclass
221
+ class QueryTrace:
222
+ query_index: int
223
+ query_name: str
224
+ query: dict[str, Any]
225
+ scope: int
226
+ score_only: bool
227
+ candidate_depth: int
228
+ total_seen: int
229
+ candidates: list[FusionCandidate] = field(default_factory=list)
230
+
231
+
232
+ @dataclass
233
+ class ShardSearchTrace:
234
+ shard_id: str
235
+ backend_id: str
236
+ index_name: str
237
+ queries: list[QueryTrace]
238
+ selected: list[FusionCandidate]
239
+ ranking_method: str
240
+ truncated: bool
241
+ filters: list[dict[str, Any]] = field(default_factory=list)
242
+
243
+
244
+ @dataclass
245
+ class SearchTrace:
246
+ shards: list[ShardSearchTrace] = field(default_factory=list)
178
247
 
179
248
 
180
249
  @dataclass
@@ -185,6 +254,10 @@ class SearchResponse:
185
254
  total_hits: int
186
255
  took_ms: int
187
256
  timings: SearchTimings | None = None
257
+ ranking_method: str = ""
258
+ truncated: bool = False
259
+ fusion_candidates: list[FusionCandidateList] = field(default_factory=list)
260
+ trace: SearchTrace | None = None
188
261
 
189
262
 
190
263
  @dataclass
@@ -206,3 +279,5 @@ class IndexInfo:
206
279
  num_segments: int
207
280
  schema: str
208
281
  vector_stats: list[VectorFieldStats] = field(default_factory=list)
282
+ candidate_scoring_version: int = 0
283
+ unprepared_candidate_fields: list[str] = field(default_factory=list)
@@ -1,172 +0,0 @@
1
- # Generated by the protocol buffer compiler. DO NOT EDIT!
2
- # NO CHECKED-IN PROTOBUF GENCODE
3
- # source: hermes.proto
4
- # Protobuf Python Version: 6.31.1
5
- """Generated protocol buffer code."""
6
-
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
-
13
- _runtime_version.ValidateProtobufRuntimeVersion(
14
- _runtime_version.Domain.PUBLIC, 6, 31, 1, "", "hermes.proto"
15
- )
16
- # @@protoc_insertion_point(imports)
17
-
18
- _sym_db = _symbol_database.Default()
19
-
20
-
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
22
- b'\n\x0chermes.proto\x12\x06hermes"\x86\x04\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\x12#\n\x05range\x18\x08 \x01(\x0b\x32\x12.hermes.RangeQueryH\x00\x12%\n\x06prefix\x18\t \x01(\x0b\x32\x13.hermes.PrefixQueryH\x00\x12=\n\x13\x62inary_dense_vector\x18\n \x01(\x0b\x32\x1e.hermes.BinaryDenseVectorQueryH\x00\x12%\n\x06\x66usion\x18\x0b \x01(\x0b\x32\x13.hermes.FusionQueryH\x00\x12%\n\x06phrase\x18\x0c \x01(\x0b\x32\x13.hermes.PhraseQueryH\x00\x42\x07\n\x05query"=\n\rWeightedQuery\x12\x1c\n\x05query\x18\x01 \x01(\x0b\x32\r.hermes.Query\x12\x0e\n\x06weight\x18\x02 \x01(\x02"\x98\x01\n\x0b\x46usionQuery\x12&\n\x07queries\x18\x01 \x03(\x0b\x32\x15.hermes.WeightedQuery\x12$\n\x06method\x18\x02 \x01(\x0e\x32\x14.hermes.FusionMethod\x12\r\n\x05rrf_k\x18\x03 \x01(\x02\x12,\n\x08\x63ombiner\x18\x05 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner"\xcb\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\x12\x16\n\tlsp_gamma\x18\r \x01(\rH\x00\x88\x01\x01\x42\x0c\n\n_lsp_gamma"\xbd\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,\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"\xb3\x01\n\x16\x42inaryDenseVectorQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06vector\x18\x02 \x01(\x0c\x12,\n\x08\x63ombiner\x18\x03 \x01(\x0e\x32\x1a.hermes.MultiValueCombiner\x12\x1c\n\x14\x63ombiner_temperature\x18\x04 \x01(\x02\x12\x16\n\x0e\x63ombiner_top_k\x18\x05 \x01(\r\x12\x16\n\x0e\x63ombiner_decay\x18\x06 \x01(\x02"@\n\tTermQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04term\x18\x02 \x01(\t\x12\x16\n\x0etokenizer_hint\x18\x03 \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"\xe7\x01\n\nRangeQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x14\n\x07min_u64\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x14\n\x07max_u64\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12\x14\n\x07min_i64\x18\x04 \x01(\x03H\x02\x88\x01\x01\x12\x14\n\x07max_i64\x18\x05 \x01(\x03H\x03\x88\x01\x01\x12\x14\n\x07min_f64\x18\x06 \x01(\x01H\x04\x88\x01\x01\x12\x14\n\x07max_f64\x18\x07 \x01(\x01H\x05\x88\x01\x01\x42\n\n\x08_min_u64B\n\n\x08_max_u64B\n\n\x08_min_i64B\n\n\x08_max_i64B\n\n\x08_min_f64B\n\n\x08_max_f64"\x9d\x01\n\nMatchQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x16\n\x0etokenizer_hint\x18\x03 \x01(\t\x12\x18\n\x10proximity_weight\x18\x04 \x01(\x02\x12\x18\n\x10proximity_window\x18\x05 \x01(\r\x12\x13\n\x0bheap_factor\x18\x06 \x01(\x02\x12\x11\n\tmax_terms\x18\x07 \x01(\r"P\n\x0bPhraseQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x0c\n\x04slop\x18\x03 \x01(\r\x12\x16\n\x0etokenizer_hint\x18\x04 \x01(\t",\n\x0bPrefixQuery\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06prefix\x18\x02 \x01(\t"\xe4\x01\n\x08Reranker\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0e\n\x06vector\x18\x02 \x03(\x02\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\x12\x15\n\rbinary_vector\x18\t \x01(\x0c\x12\r\n\x05rrf_k\x18\n \x01(\x02"\xf4\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\x17\n\x0f\x63\x61ndidate_limit\x18\x07 \x01(\r\x12\x16\n\x0etime_budget_ms\x18\x08 \x01(\x04\x12%\n\ntext_stats\x18\t \x01(\x0b\x32\x11.hermes.TextStats"G\n\x13GetTextStatsRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x1c\n\x05query\x18\x02 \x01(\x0b\x32\r.hermes.Query"8\n\x14GetTextStatsResponse\x12 \n\x05stats\x18\x01 \x01(\x0b\x32\x11.hermes.TextStats"G\n\tTextStats\x12\x12\n\ntotal_docs\x18\x01 \x01(\x04\x12&\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x16.hermes.TextFieldStats"i\n\x0eTextFieldStats\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x13\n\x0b\x63orpus_size\x18\x02 \x01(\x04\x12\x0f\n\x07\x61vg_len\x18\x03 \x01(\x02\x12"\n\x05terms\x18\x04 \x03(\x0b\x32\x13.hermes.TermDocFreq"-\n\x0bTermDocFreq\x12\x0c\n\x04term\x18\x01 \x01(\x0c\x12\x10\n\x08\x64oc_freq\x18\x02 \x01(\x04"0\n\nDocAddress\x12\x12\n\nsegment_id\x18\x01 \x01(\t\x12\x0e\n\x06\x64oc_id\x18\x02 \x01(\r"\xe3\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\x45\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.hermes.FieldValueList:\x02\x38\x01"4\n\x0e\x46ieldValueList\x12"\n\x06values\x18\x01 \x03(\x0b\x32\x12.hermes.FieldValue".\n\x0cOrdinalScore\x12\x0f\n\x07ordinal\x18\x01 \x01(\r\x12\r\n\x05score\x18\x02 \x01(\x02"\xfa\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\x12\x1d\n\x13\x62inary_dense_vector\x18\t \x01(\x0cH\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"\x91\x01\n\x0eSearchResponse\x12\x1f\n\x04hits\x18\x01 \x03(\x0b\x32\x11.hermes.SearchHit\x12\x12\n\ntotal_hits\x18\x02 \x01(\x04\x12\x0f\n\x07took_ms\x18\x03 \x01(\x04\x12&\n\x07timings\x18\x04 \x01(\x0b\x32\x15.hermes.SearchTimings\x12\x11\n\ttruncated\x18\x05 \x01(\x08"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"\x95\x01\n\x13GetDocumentResponse\x12\x37\n\x06\x66ields\x18\x01 \x03(\x0b\x32\'.hermes.GetDocumentResponse.FieldsEntry\x1a\x45\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.hermes.FieldValueList:\x02\x38\x01")\n\x13GetIndexInfoRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t"\xe9\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\x12*\n\x0btext_fields\x18\x07 \x03(\x0b\x32\x15.hermes.TextFieldInfo"y\n\rTextFieldInfo\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x0f\n\x07lexical\x18\x02 \x01(\x08\x12\x12\n\nhint_field\x18\x03 \x01(\t\x12\x10\n\x08variants\x18\x04 \x01(\x08\x12\x11\n\tpositions\x18\x05 \x01(\x08\x12\x0f\n\x07\x63hunked\x18\x06 \x01(\x08"\x83\x01\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\x12\x1c\n\x14\x61vg_terms_per_vector\x18\x05 \x01(\x02"\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"p\n\x1b\x42\x61tchIndexDocumentsResponse\x12\x15\n\rindexed_count\x18\x01 \x01(\r\x12\x13\n\x0b\x65rror_count\x18\x02 \x01(\r\x12%\n\x06\x65rrors\x18\x03 \x03(\x0b\x32\x15.hermes.DocumentError"-\n\rDocumentError\x12\r\n\x05index\x18\x01 \x01(\r\x12\r\n\x05\x65rror\x18\x02 \x01(\t"N\n\x14IndexDocumentRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12"\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x12.hermes.FieldEntry"V\n\x16IndexDocumentsResponse\x12\x15\n\rindexed_count\x18\x01 \x01(\r\x12%\n\x06\x65rrors\x18\x02 \x03(\x0b\x32\x15.hermes.DocumentError"#\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"W\n\x17\x41lterVectorIndexRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t\x12\x12\n\nfield_name\x18\x02 \x01(\t\x12\x14\n\x0c\x66ield_schema\x18\x03 \x01(\t"h\n\x18\x41lterVectorIndexResponse\x12\x1e\n\x16publication_generation\x18\x01 \x01(\x04\x12,\n\x05state\x18\x02 \x01(\x0e\x32\x1d.hermes.VectorIndexAlterState"$\n\x0eReorderRequest\x12\x12\n\nindex_name\x18\x01 \x01(\t"8\n\x0fReorderResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x14\n\x0cnum_segments\x18\x02 \x01(\r*B\n\x0c\x46usionMethod\x12\x0e\n\nFUSION_RRF\x10\x00\x12"\n\x1e\x46USION_NORMALIZED_WEIGHTED_SUM\x10\x01*\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*\xbf\x01\n\x15VectorIndexAlterState\x12(\n$VECTOR_INDEX_ALTER_STATE_UNSPECIFIED\x10\x00\x12"\n\x1eVECTOR_INDEX_ALTER_STATE_BUILT\x10\x01\x12*\n&VECTOR_INDEX_ALTER_STATE_DEFERRED_FLAT\x10\x02\x12,\n(VECTOR_INDEX_ALTER_STATE_PARAMETERS_ONLY\x10\x03\x32\xa6\x02\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.GetIndexInfoResponse\x12I\n\x0cGetTextStats\x12\x1b.hermes.GetTextStatsRequest\x1a\x1c.hermes.GetTextStatsResponse2\x86\x06\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:\n\x07Reorder\x12\x16.hermes.ReorderRequest\x1a\x17.hermes.ReorderResponse\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.RetrainVectorIndexResponse\x12U\n\x10\x41lterVectorIndex\x12\x1f.hermes.AlterVectorIndexRequest\x1a .hermes.AlterVectorIndexResponseb\x06proto3'
23
- )
24
-
25
- _globals = globals()
26
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
27
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "hermes_pb2", _globals)
28
- if not _descriptor._USE_C_DESCRIPTORS:
29
- DESCRIPTOR._loaded_options = None
30
- _globals["_SEARCHHIT_FIELDSENTRY"]._loaded_options = None
31
- _globals["_SEARCHHIT_FIELDSENTRY"]._serialized_options = b"8\001"
32
- _globals["_GETDOCUMENTRESPONSE_FIELDSENTRY"]._loaded_options = None
33
- _globals["_GETDOCUMENTRESPONSE_FIELDSENTRY"]._serialized_options = b"8\001"
34
- _globals["_FUSIONMETHOD"]._serialized_start = 6712
35
- _globals["_FUSIONMETHOD"]._serialized_end = 6778
36
- _globals["_MULTIVALUECOMBINER"]._serialized_start = 6781
37
- _globals["_MULTIVALUECOMBINER"]._serialized_end = 6910
38
- _globals["_VECTORINDEXALTERSTATE"]._serialized_start = 6913
39
- _globals["_VECTORINDEXALTERSTATE"]._serialized_end = 7104
40
- _globals["_QUERY"]._serialized_start = 25
41
- _globals["_QUERY"]._serialized_end = 543
42
- _globals["_WEIGHTEDQUERY"]._serialized_start = 545
43
- _globals["_WEIGHTEDQUERY"]._serialized_end = 606
44
- _globals["_FUSIONQUERY"]._serialized_start = 609
45
- _globals["_FUSIONQUERY"]._serialized_end = 761
46
- _globals["_SPARSEVECTORQUERY"]._serialized_start = 764
47
- _globals["_SPARSEVECTORQUERY"]._serialized_end = 1095
48
- _globals["_DENSEVECTORQUERY"]._serialized_start = 1098
49
- _globals["_DENSEVECTORQUERY"]._serialized_end = 1287
50
- _globals["_BINARYDENSEVECTORQUERY"]._serialized_start = 1290
51
- _globals["_BINARYDENSEVECTORQUERY"]._serialized_end = 1469
52
- _globals["_TERMQUERY"]._serialized_start = 1471
53
- _globals["_TERMQUERY"]._serialized_end = 1535
54
- _globals["_BOOLEANQUERY"]._serialized_start = 1537
55
- _globals["_BOOLEANQUERY"]._serialized_end = 1644
56
- _globals["_BOOSTQUERY"]._serialized_start = 1646
57
- _globals["_BOOSTQUERY"]._serialized_end = 1703
58
- _globals["_ALLQUERY"]._serialized_start = 1705
59
- _globals["_ALLQUERY"]._serialized_end = 1715
60
- _globals["_RANGEQUERY"]._serialized_start = 1718
61
- _globals["_RANGEQUERY"]._serialized_end = 1949
62
- _globals["_MATCHQUERY"]._serialized_start = 1952
63
- _globals["_MATCHQUERY"]._serialized_end = 2109
64
- _globals["_PHRASEQUERY"]._serialized_start = 2111
65
- _globals["_PHRASEQUERY"]._serialized_end = 2191
66
- _globals["_PREFIXQUERY"]._serialized_start = 2193
67
- _globals["_PREFIXQUERY"]._serialized_end = 2237
68
- _globals["_RERANKER"]._serialized_start = 2240
69
- _globals["_RERANKER"]._serialized_end = 2468
70
- _globals["_SEARCHREQUEST"]._serialized_start = 2471
71
- _globals["_SEARCHREQUEST"]._serialized_end = 2715
72
- _globals["_GETTEXTSTATSREQUEST"]._serialized_start = 2717
73
- _globals["_GETTEXTSTATSREQUEST"]._serialized_end = 2788
74
- _globals["_GETTEXTSTATSRESPONSE"]._serialized_start = 2790
75
- _globals["_GETTEXTSTATSRESPONSE"]._serialized_end = 2846
76
- _globals["_TEXTSTATS"]._serialized_start = 2848
77
- _globals["_TEXTSTATS"]._serialized_end = 2919
78
- _globals["_TEXTFIELDSTATS"]._serialized_start = 2921
79
- _globals["_TEXTFIELDSTATS"]._serialized_end = 3026
80
- _globals["_TERMDOCFREQ"]._serialized_start = 3028
81
- _globals["_TERMDOCFREQ"]._serialized_end = 3073
82
- _globals["_DOCADDRESS"]._serialized_start = 3075
83
- _globals["_DOCADDRESS"]._serialized_end = 3123
84
- _globals["_SEARCHHIT"]._serialized_start = 3126
85
- _globals["_SEARCHHIT"]._serialized_end = 3353
86
- _globals["_SEARCHHIT_FIELDSENTRY"]._serialized_start = 3284
87
- _globals["_SEARCHHIT_FIELDSENTRY"]._serialized_end = 3353
88
- _globals["_FIELDVALUELIST"]._serialized_start = 3355
89
- _globals["_FIELDVALUELIST"]._serialized_end = 3407
90
- _globals["_ORDINALSCORE"]._serialized_start = 3409
91
- _globals["_ORDINALSCORE"]._serialized_end = 3455
92
- _globals["_FIELDVALUE"]._serialized_start = 3458
93
- _globals["_FIELDVALUE"]._serialized_end = 3708
94
- _globals["_SPARSEVECTOR"]._serialized_start = 3710
95
- _globals["_SPARSEVECTOR"]._serialized_end = 3757
96
- _globals["_DENSEVECTOR"]._serialized_start = 3759
97
- _globals["_DENSEVECTOR"]._serialized_end = 3788
98
- _globals["_SEARCHRESPONSE"]._serialized_start = 3791
99
- _globals["_SEARCHRESPONSE"]._serialized_end = 3936
100
- _globals["_SEARCHTIMINGS"]._serialized_start = 3938
101
- _globals["_SEARCHTIMINGS"]._serialized_end = 4026
102
- _globals["_GETDOCUMENTREQUEST"]._serialized_start = 4028
103
- _globals["_GETDOCUMENTREQUEST"]._serialized_end = 4105
104
- _globals["_GETDOCUMENTRESPONSE"]._serialized_start = 4108
105
- _globals["_GETDOCUMENTRESPONSE"]._serialized_end = 4257
106
- _globals["_GETDOCUMENTRESPONSE_FIELDSENTRY"]._serialized_start = 3284
107
- _globals["_GETDOCUMENTRESPONSE_FIELDSENTRY"]._serialized_end = 3353
108
- _globals["_GETINDEXINFOREQUEST"]._serialized_start = 4259
109
- _globals["_GETINDEXINFOREQUEST"]._serialized_end = 4300
110
- _globals["_GETINDEXINFORESPONSE"]._serialized_start = 4303
111
- _globals["_GETINDEXINFORESPONSE"]._serialized_end = 4536
112
- _globals["_TEXTFIELDINFO"]._serialized_start = 4538
113
- _globals["_TEXTFIELDINFO"]._serialized_end = 4659
114
- _globals["_VECTORFIELDSTATS"]._serialized_start = 4662
115
- _globals["_VECTORFIELDSTATS"]._serialized_end = 4793
116
- _globals["_MEMORYSTATS"]._serialized_start = 4796
117
- _globals["_MEMORYSTATS"]._serialized_end = 4936
118
- _globals["_INDEXINGBUFFERSTATS"]._serialized_start = 4939
119
- _globals["_INDEXINGBUFFERSTATS"]._serialized_end = 5162
120
- _globals["_SEGMENTREADERSTATS"]._serialized_start = 5165
121
- _globals["_SEGMENTREADERSTATS"]._serialized_end = 5348
122
- _globals["_CREATEINDEXREQUEST"]._serialized_start = 5350
123
- _globals["_CREATEINDEXREQUEST"]._serialized_end = 5406
124
- _globals["_CREATEINDEXRESPONSE"]._serialized_start = 5408
125
- _globals["_CREATEINDEXRESPONSE"]._serialized_end = 5446
126
- _globals["_FIELDENTRY"]._serialized_start = 5448
127
- _globals["_FIELDENTRY"]._serialized_end = 5509
128
- _globals["_NAMEDDOCUMENT"]._serialized_start = 5511
129
- _globals["_NAMEDDOCUMENT"]._serialized_end = 5562
130
- _globals["_BATCHINDEXDOCUMENTSREQUEST"]._serialized_start = 5564
131
- _globals["_BATCHINDEXDOCUMENTSREQUEST"]._serialized_end = 5654
132
- _globals["_BATCHINDEXDOCUMENTSRESPONSE"]._serialized_start = 5656
133
- _globals["_BATCHINDEXDOCUMENTSRESPONSE"]._serialized_end = 5768
134
- _globals["_DOCUMENTERROR"]._serialized_start = 5770
135
- _globals["_DOCUMENTERROR"]._serialized_end = 5815
136
- _globals["_INDEXDOCUMENTREQUEST"]._serialized_start = 5817
137
- _globals["_INDEXDOCUMENTREQUEST"]._serialized_end = 5895
138
- _globals["_INDEXDOCUMENTSRESPONSE"]._serialized_start = 5897
139
- _globals["_INDEXDOCUMENTSRESPONSE"]._serialized_end = 5983
140
- _globals["_COMMITREQUEST"]._serialized_start = 5985
141
- _globals["_COMMITREQUEST"]._serialized_end = 6020
142
- _globals["_COMMITRESPONSE"]._serialized_start = 6022
143
- _globals["_COMMITRESPONSE"]._serialized_end = 6073
144
- _globals["_FORCEMERGEREQUEST"]._serialized_start = 6075
145
- _globals["_FORCEMERGEREQUEST"]._serialized_end = 6114
146
- _globals["_FORCEMERGERESPONSE"]._serialized_start = 6116
147
- _globals["_FORCEMERGERESPONSE"]._serialized_end = 6175
148
- _globals["_DELETEINDEXREQUEST"]._serialized_start = 6177
149
- _globals["_DELETEINDEXREQUEST"]._serialized_end = 6217
150
- _globals["_DELETEINDEXRESPONSE"]._serialized_start = 6219
151
- _globals["_DELETEINDEXRESPONSE"]._serialized_end = 6257
152
- _globals["_LISTINDEXESREQUEST"]._serialized_start = 6259
153
- _globals["_LISTINDEXESREQUEST"]._serialized_end = 6279
154
- _globals["_LISTINDEXESRESPONSE"]._serialized_start = 6281
155
- _globals["_LISTINDEXESRESPONSE"]._serialized_end = 6323
156
- _globals["_RETRAINVECTORINDEXREQUEST"]._serialized_start = 6325
157
- _globals["_RETRAINVECTORINDEXREQUEST"]._serialized_end = 6372
158
- _globals["_RETRAINVECTORINDEXRESPONSE"]._serialized_start = 6374
159
- _globals["_RETRAINVECTORINDEXRESPONSE"]._serialized_end = 6419
160
- _globals["_ALTERVECTORINDEXREQUEST"]._serialized_start = 6421
161
- _globals["_ALTERVECTORINDEXREQUEST"]._serialized_end = 6508
162
- _globals["_ALTERVECTORINDEXRESPONSE"]._serialized_start = 6510
163
- _globals["_ALTERVECTORINDEXRESPONSE"]._serialized_end = 6614
164
- _globals["_REORDERREQUEST"]._serialized_start = 6616
165
- _globals["_REORDERREQUEST"]._serialized_end = 6652
166
- _globals["_REORDERRESPONSE"]._serialized_start = 6654
167
- _globals["_REORDERRESPONSE"]._serialized_end = 6710
168
- _globals["_SEARCHSERVICE"]._serialized_start = 7107
169
- _globals["_SEARCHSERVICE"]._serialized_end = 7401
170
- _globals["_INDEXSERVICE"]._serialized_start = 7404
171
- _globals["_INDEXSERVICE"]._serialized_end = 8178
172
- # @@protoc_insertion_point(module_scope)