Skip to content

Commit 64de0b3

Browse files
♻️ cleanup and uniformize RAG search implementation with other SDKs
1 parent 99bde7c commit 64de0b3

25 files changed

Lines changed: 261 additions & 73 deletions

‎docs/v2/client_options.rst‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
V2 Client Options
22
#################
33

4-
Base Parameters
5-
===============
6-
.. autoclass:: mindee.v2.client_options.base_parameters.BaseParameters
4+
Base Product Parameters
5+
=======================
6+
.. autoclass:: mindee.v2.client_options.base_product_parameters.BaseProductParameters
7+
:members:
8+
:inherited-members:
9+
10+
Base Search Parameters
11+
======================
12+
.. autoclass:: mindee.v2.client_options.base_search_parameters.BaseSearchParameters
713
:members:
814
:inherited-members:

‎docs/v2/index.rst‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ V2 Utilities
1010
./mindee_http
1111
./parsing/index
1212
./product/index
13+
./search
1314

1415

1516

‎docs/v2/mindee_http.rst‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,3 @@ Mindee API V2
66
.. autoclass:: mindee.v2.mindee_http.mindee_api_v2.MindeeAPIV2
77
:members:
88
:inherited-members:
9-
10-
Response Validation V2
11-
======================
12-
.. automodule:: mindee.v2.mindee_http.response_validation_v2
13-
:members:
14-
:inherited-members:

‎docs/v2/parsing/search.rst‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,20 @@ Search Models
2828
:members:
2929
:inherited-members:
3030

31+
Search RAG Document
32+
###################
33+
.. autoclass:: mindee.v2.parsing.search.search_rag_document.SearchRagDocument
34+
:members:
35+
:inherited-members:
36+
37+
Search RAG Documents
38+
####################
39+
.. autoclass:: mindee.v2.parsing.search.search_rag_documents.SearchRagDocuments
40+
:members:
41+
:inherited-members:
42+
3143
Search Response
3244
###############
3345
.. autoclass:: mindee.v2.parsing.search.search_response.SearchResponse
3446
:members:
3547
:inherited-members:
36-

‎docs/v2/search.rst‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
V2 Search
2+
#########
3+
4+
Model Search Parameters
5+
=======================
6+
.. autoclass:: mindee.v2.search.models.model_search_parameters.ModelSearchParameters
7+
:members:
8+
:inherited-members:
9+
10+
Model Search Response
11+
=====================
12+
.. autoclass:: mindee.v2.search.models.model_search_response.ModelSearchResponse
13+
:members:
14+
:inherited-members:
15+
16+
RAG Document Search Parameters
17+
==============================
18+
.. autoclass:: mindee.v2.search.rag_documents.rag_document_search_parameters.RagDocumentSearchParameters
19+
:members:
20+
:inherited-members:
21+
22+
RAG Document Search Response
23+
============================
24+
.. autoclass:: mindee.v2.search.rag_documents.rag_document_search_response.RagDocumentSearchResponse
25+
:members:
26+
:inherited-members:

‎mindee/cli.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ def main() -> None:
6363
"""Run the Command Line Interface.
6464
6565
The unified ``mindee`` binary exposes V2 inference commands and the
66-
``search-models`` utility at the root, with all V1 product commands
67-
wrapped under a ``v1`` subcommand — mirroring the canonical
68-
``mindee-api-dotnet`` CLI.
66+
``search-models`` and ``search-rag-docs`` utilities at the root, with
67+
all V1 product commands wrapped under a ``v1`` subcommand — mirroring
68+
the canonical ``mindee-api-dotnet`` CLI.
6969
7070
Pass ``--verbose`` (or ``-v``) to enable diagnostic logging; repeat
7171
the flag (``--verbose --verbose``) for debug-level output.

‎mindee/v2/client_options/base_search_parameters.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ def get_request_parameters(self) -> dict[str, str | list[str]]:
3131
"""
3232
data: dict[str, str | list[str]] = {}
3333

34-
if self.page is not None:
34+
if self.page is not None and self.page > 0:
3535
data["page"] = str(self.page)
36-
if self.per_page is not None:
36+
if self.per_page is not None and self.per_page > 0:
3737
data["per_page"] = str(self.per_page)
3838

3939
return data

‎mindee/v2/commands/__init__.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from mindee.v2.commands.ocr_command import OcrCommand
77
from mindee.v2.commands.output_type import OutputType
88
from mindee.v2.commands.search_models_command import SearchModelsCommand
9+
from mindee.v2.commands.search_rag_documents_command import SearchRagDocumentsCommand
910
from mindee.v2.commands.split_command import SplitCommand
1011

1112
__all__ = [
@@ -18,5 +19,6 @@
1819
"OcrCommand",
1920
"OutputType",
2021
"SearchModelsCommand",
22+
"SearchRagDocumentsCommand",
2123
"SplitCommand",
2224
]

‎mindee/v2/commands/cli_parser.py‎

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from mindee.v2.commands.extraction_command import ExtractionCommand
1717
from mindee.v2.commands.ocr_command import OcrCommand
1818
from mindee.v2.commands.search_models_command import SearchModelsCommand
19+
from mindee.v2.commands.search_rag_documents_command import SearchRagDocumentsCommand
1920
from mindee.v2.commands.split_command import SplitCommand
2021
from mindee.v2.error.mindee_api_v2_error import MindeeAPIV2Error
2122

@@ -51,7 +52,7 @@ class MindeeParser:
5152
5253
* V2 inference commands are exposed at the root level
5354
(``classification``, ``crop``, ``extraction``, ``ocr``, ``split``).
54-
* The ``search-models`` utility is also at the root.
55+
* The ``search-models`` and ``search-rag-docs`` utilities are also at the root.
5556
* V1 product commands are wrapped under a ``v1`` subcommand.
5657
"""
5758

@@ -60,6 +61,7 @@ class MindeeParser:
6061
_client_factory: Callable[[str | None], Client]
6162
_inference_commands: dict[str, BaseInferenceCommand]
6263
_search_models_command: SearchModelsCommand
64+
_search_rag_documents_command: SearchRagDocumentsCommand
6365

6466
def __init__(
6567
self,
@@ -76,6 +78,7 @@ def __init__(
7678
cmd.name: cmd for cmd in _build_inference_commands()
7779
}
7880
self._search_models_command = SearchModelsCommand()
81+
self._search_rag_documents_command = SearchRagDocumentsCommand()
7982
if parsed_args is None:
8083
self._build_parser()
8184
self.parsed_args = self.parser.parse_args()
@@ -95,27 +98,33 @@ def call_parse(self) -> int:
9598
self.parser.print_help()
9699
return 1
97100
try:
98-
if cmd == "v1":
99-
v1_parser = V1MindeeParser(parsed_args=self.parsed_args)
100-
v1_parser.call_parse()
101-
return 0
102-
if cmd == self._search_models_command.name:
103-
return self._search_models_command.execute(
104-
self.parsed_args, self._client_factory
105-
)
106-
inference_command = self._inference_commands.get(cmd)
107-
if inference_command is None:
108-
raise ValueError(f"Unknown command: {cmd}")
109-
return inference_command.execute(self.parsed_args, self._client_factory)
101+
return self._execute_command(cmd)
110102
except MindeeAPIV2Error as exc:
111103
return _report_api_key_error(exc, "V2", "MINDEE_V2_API_KEY")
112104
except MindeeAPIError as exc:
113105
return _report_api_key_error(exc, "V1", "MINDEE_API_KEY")
114106

107+
def _execute_command(self, cmd: str) -> int:
108+
"""Execute a parsed subcommand."""
109+
if cmd == "v1":
110+
v1_parser = V1MindeeParser(parsed_args=self.parsed_args)
111+
v1_parser.call_parse()
112+
return 0
113+
if cmd == self._search_models_command.name:
114+
return self._search_models_command.execute(
115+
self.parsed_args, self._client_factory
116+
)
117+
if cmd == self._search_rag_documents_command.name:
118+
return self._search_rag_documents_command.execute(
119+
self.parsed_args, self._client_factory
120+
)
121+
122+
inference_command = self._inference_commands.get(cmd)
123+
if inference_command is None:
124+
raise ValueError(f"Unknown command: {cmd}")
125+
return inference_command.execute(self.parsed_args, self._client_factory)
126+
115127
def _build_parser(self) -> None:
116-
# ``--verbose`` / ``-v`` are pre-consumed in ``mindee.cli.main``
117-
# (mirroring the .NET ``args.Contains("--verbose")`` pattern); we
118-
# still register them here for ``--help`` discoverability.
119128
self.parser.add_argument(
120129
"-v",
121130
"--verbose",
@@ -129,6 +138,7 @@ def _build_parser(self) -> None:
129138
cmd.register(subparsers)
130139

131140
self._search_models_command.register(subparsers)
141+
self._search_rag_documents_command.register(subparsers)
132142

133143
v1_parser = subparsers.add_parser(
134144
"v1",

‎mindee/v2/commands/search_models_command.py‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from collections.abc import Callable
33

44
from mindee.v2.client import Client
5+
from mindee.v2.search.models.model_search_parameters import ModelSearchParameters
56

67
_AVAILABLE_MODEL_TYPES: list[str] = [
78
"extraction",
@@ -74,9 +75,11 @@ def execute(
7475
) -> int:
7576
"""Run the search and print the result."""
7677
client = client_factory(getattr(parsed_args, "api_key", None))
77-
response = client.search_models(
78-
name=getattr(parsed_args, "name", None),
79-
model_type=getattr(parsed_args, "model_type", None),
78+
response = client.search(
79+
ModelSearchParameters(
80+
name=getattr(parsed_args, "name", None),
81+
model_type=getattr(parsed_args, "model_type", None),
82+
)
8083
)
8184
if getattr(parsed_args, "raw_json", False):
8285
print(response.raw_http)

0 commit comments

Comments
 (0)