biblicus 1.0.0__py3-none-any.whl → 1.1.1__py3-none-any.whl
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.
- biblicus/__init__.py +5 -5
- biblicus/analysis/__init__.py +1 -1
- biblicus/analysis/base.py +10 -10
- biblicus/analysis/markov.py +78 -68
- biblicus/analysis/models.py +47 -47
- biblicus/analysis/profiling.py +58 -48
- biblicus/analysis/topic_modeling.py +56 -51
- biblicus/cli.py +224 -177
- biblicus/{recipes.py → configuration.py} +14 -14
- biblicus/constants.py +2 -2
- biblicus/context_engine/assembler.py +49 -19
- biblicus/context_engine/retrieval.py +46 -42
- biblicus/corpus.py +116 -108
- biblicus/errors.py +3 -3
- biblicus/evaluation.py +27 -25
- biblicus/extraction.py +103 -98
- biblicus/extraction_evaluation.py +26 -26
- biblicus/extractors/deepgram_stt.py +7 -7
- biblicus/extractors/docling_granite_text.py +11 -11
- biblicus/extractors/docling_smol_text.py +11 -11
- biblicus/extractors/markitdown_text.py +4 -4
- biblicus/extractors/openai_stt.py +7 -7
- biblicus/extractors/paddleocr_vl_text.py +20 -18
- biblicus/extractors/pipeline.py +8 -8
- biblicus/extractors/rapidocr_text.py +3 -3
- biblicus/extractors/unstructured_text.py +3 -3
- biblicus/hooks.py +4 -4
- biblicus/knowledge_base.py +33 -31
- biblicus/models.py +78 -78
- biblicus/retrieval.py +47 -40
- biblicus/retrievers/__init__.py +50 -0
- biblicus/retrievers/base.py +65 -0
- biblicus/{backends → retrievers}/embedding_index_common.py +44 -41
- biblicus/{backends → retrievers}/embedding_index_file.py +87 -58
- biblicus/{backends → retrievers}/embedding_index_inmemory.py +88 -59
- biblicus/retrievers/hybrid.py +301 -0
- biblicus/{backends → retrievers}/scan.py +83 -73
- biblicus/{backends → retrievers}/sqlite_full_text_search.py +115 -101
- biblicus/{backends → retrievers}/tf_vector.py +87 -77
- biblicus/text/prompts.py +16 -8
- biblicus/text/tool_loop.py +63 -5
- {biblicus-1.0.0.dist-info → biblicus-1.1.1.dist-info}/METADATA +52 -43
- biblicus-1.1.1.dist-info/RECORD +91 -0
- biblicus/backends/__init__.py +0 -50
- biblicus/backends/base.py +0 -65
- biblicus/backends/hybrid.py +0 -292
- biblicus-1.0.0.dist-info/RECORD +0 -91
- {biblicus-1.0.0.dist-info → biblicus-1.1.1.dist-info}/WHEEL +0 -0
- {biblicus-1.0.0.dist-info → biblicus-1.1.1.dist-info}/entry_points.txt +0 -0
- {biblicus-1.0.0.dist-info → biblicus-1.1.1.dist-info}/licenses/LICENSE +0 -0
- {biblicus-1.0.0.dist-info → biblicus-1.1.1.dist-info}/top_level.txt +0 -0
biblicus/backends/hybrid.py
DELETED
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Hybrid retrieval backend combining lexical and vector results.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from __future__ import annotations
|
|
6
|
-
|
|
7
|
-
from typing import Dict, List, Optional
|
|
8
|
-
|
|
9
|
-
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
10
|
-
|
|
11
|
-
from ..corpus import Corpus
|
|
12
|
-
from ..models import Evidence, QueryBudget, RetrievalResult, RetrievalRun
|
|
13
|
-
from ..retrieval import apply_budget, create_recipe_manifest, create_run_manifest
|
|
14
|
-
from ..time import utc_now_iso
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class HybridRecipeConfig(BaseModel):
|
|
18
|
-
"""
|
|
19
|
-
Configuration for hybrid retrieval fusion.
|
|
20
|
-
|
|
21
|
-
:ivar lexical_backend: Backend identifier for lexical retrieval.
|
|
22
|
-
:vartype lexical_backend: str
|
|
23
|
-
:ivar embedding_backend: Backend identifier for embedding retrieval.
|
|
24
|
-
:vartype embedding_backend: str
|
|
25
|
-
:ivar lexical_weight: Weight for lexical scores.
|
|
26
|
-
:vartype lexical_weight: float
|
|
27
|
-
:ivar embedding_weight: Weight for embedding scores.
|
|
28
|
-
:vartype embedding_weight: float
|
|
29
|
-
:ivar lexical_config: Optional lexical backend configuration.
|
|
30
|
-
:vartype lexical_config: dict[str, object]
|
|
31
|
-
:ivar embedding_config: Optional embedding backend configuration.
|
|
32
|
-
:vartype embedding_config: dict[str, object]
|
|
33
|
-
"""
|
|
34
|
-
|
|
35
|
-
model_config = ConfigDict(extra="forbid")
|
|
36
|
-
|
|
37
|
-
lexical_backend: str = Field(default="sqlite-full-text-search", min_length=1)
|
|
38
|
-
embedding_backend: str = Field(default="tf-vector", min_length=1)
|
|
39
|
-
lexical_weight: float = Field(default=0.5, ge=0, le=1)
|
|
40
|
-
embedding_weight: float = Field(default=0.5, ge=0, le=1)
|
|
41
|
-
lexical_config: Dict[str, object] = Field(default_factory=dict)
|
|
42
|
-
embedding_config: Dict[str, object] = Field(default_factory=dict)
|
|
43
|
-
|
|
44
|
-
@model_validator(mode="after")
|
|
45
|
-
def _validate_weights(self) -> "HybridRecipeConfig":
|
|
46
|
-
if abs((self.lexical_weight + self.embedding_weight) - 1.0) > 1e-6:
|
|
47
|
-
raise ValueError("weights must sum to 1")
|
|
48
|
-
return self
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
class HybridBackend:
|
|
52
|
-
"""
|
|
53
|
-
Hybrid backend that fuses lexical and embedding retrieval.
|
|
54
|
-
|
|
55
|
-
:ivar backend_id: Backend identifier.
|
|
56
|
-
:vartype backend_id: str
|
|
57
|
-
"""
|
|
58
|
-
|
|
59
|
-
backend_id = "hybrid"
|
|
60
|
-
|
|
61
|
-
def build_run(
|
|
62
|
-
self, corpus: Corpus, *, recipe_name: str, config: Dict[str, object]
|
|
63
|
-
) -> RetrievalRun:
|
|
64
|
-
"""
|
|
65
|
-
Build or register a hybrid retrieval run.
|
|
66
|
-
|
|
67
|
-
:param corpus: Corpus to build against.
|
|
68
|
-
:type corpus: Corpus
|
|
69
|
-
:param recipe_name: Human-readable recipe name.
|
|
70
|
-
:type recipe_name: str
|
|
71
|
-
:param config: Backend-specific configuration values.
|
|
72
|
-
:type config: dict[str, object]
|
|
73
|
-
:return: Run manifest describing the build.
|
|
74
|
-
:rtype: RetrievalRun
|
|
75
|
-
"""
|
|
76
|
-
recipe_config = HybridRecipeConfig.model_validate(config)
|
|
77
|
-
_ensure_backend_supported(recipe_config)
|
|
78
|
-
lexical_backend = _resolve_backend(recipe_config.lexical_backend)
|
|
79
|
-
embedding_backend = _resolve_backend(recipe_config.embedding_backend)
|
|
80
|
-
lexical_run = lexical_backend.build_run(
|
|
81
|
-
corpus, recipe_name=f"{recipe_name}-lexical", config=recipe_config.lexical_config
|
|
82
|
-
)
|
|
83
|
-
embedding_run = embedding_backend.build_run(
|
|
84
|
-
corpus, recipe_name=f"{recipe_name}-embedding", config=recipe_config.embedding_config
|
|
85
|
-
)
|
|
86
|
-
recipe = create_recipe_manifest(
|
|
87
|
-
backend_id=self.backend_id,
|
|
88
|
-
name=recipe_name,
|
|
89
|
-
config=recipe_config.model_dump(),
|
|
90
|
-
)
|
|
91
|
-
stats = {
|
|
92
|
-
"lexical_run_id": lexical_run.run_id,
|
|
93
|
-
"embedding_run_id": embedding_run.run_id,
|
|
94
|
-
}
|
|
95
|
-
run = create_run_manifest(corpus, recipe=recipe, stats=stats, artifact_paths=[])
|
|
96
|
-
corpus.write_run(run)
|
|
97
|
-
return run
|
|
98
|
-
|
|
99
|
-
def query(
|
|
100
|
-
self,
|
|
101
|
-
corpus: Corpus,
|
|
102
|
-
*,
|
|
103
|
-
run: RetrievalRun,
|
|
104
|
-
query_text: str,
|
|
105
|
-
budget: QueryBudget,
|
|
106
|
-
) -> RetrievalResult:
|
|
107
|
-
"""
|
|
108
|
-
Query using both lexical and embedding backends and fuse scores.
|
|
109
|
-
|
|
110
|
-
:param corpus: Corpus associated with the run.
|
|
111
|
-
:type corpus: Corpus
|
|
112
|
-
:param run: Run manifest to use for querying.
|
|
113
|
-
:type run: RetrievalRun
|
|
114
|
-
:param query_text: Query text to execute.
|
|
115
|
-
:type query_text: str
|
|
116
|
-
:param budget: Evidence selection budget.
|
|
117
|
-
:type budget: QueryBudget
|
|
118
|
-
:return: Retrieval results containing evidence.
|
|
119
|
-
:rtype: RetrievalResult
|
|
120
|
-
"""
|
|
121
|
-
recipe_config = HybridRecipeConfig.model_validate(run.recipe.config)
|
|
122
|
-
_ensure_backend_supported(recipe_config)
|
|
123
|
-
lexical_backend = _resolve_backend(recipe_config.lexical_backend)
|
|
124
|
-
embedding_backend = _resolve_backend(recipe_config.embedding_backend)
|
|
125
|
-
lexical_run_id = run.stats.get("lexical_run_id")
|
|
126
|
-
embedding_run_id = run.stats.get("embedding_run_id")
|
|
127
|
-
if not lexical_run_id or not embedding_run_id:
|
|
128
|
-
raise ValueError("Hybrid run missing lexical or embedding run identifiers")
|
|
129
|
-
lexical_run = corpus.load_run(str(lexical_run_id))
|
|
130
|
-
embedding_run = corpus.load_run(str(embedding_run_id))
|
|
131
|
-
component_budget = _expand_component_budget(budget)
|
|
132
|
-
lexical_result = lexical_backend.query(
|
|
133
|
-
corpus, run=lexical_run, query_text=query_text, budget=component_budget
|
|
134
|
-
)
|
|
135
|
-
embedding_result = embedding_backend.query(
|
|
136
|
-
corpus, run=embedding_run, query_text=query_text, budget=component_budget
|
|
137
|
-
)
|
|
138
|
-
candidates = _fuse_evidence(
|
|
139
|
-
lexical_result.evidence,
|
|
140
|
-
embedding_result.evidence,
|
|
141
|
-
lexical_weight=recipe_config.lexical_weight,
|
|
142
|
-
embedding_weight=recipe_config.embedding_weight,
|
|
143
|
-
)
|
|
144
|
-
sorted_candidates = sorted(
|
|
145
|
-
candidates,
|
|
146
|
-
key=lambda evidence_item: (-evidence_item.score, evidence_item.item_id),
|
|
147
|
-
)
|
|
148
|
-
ranked = [
|
|
149
|
-
evidence_item.model_copy(
|
|
150
|
-
update={
|
|
151
|
-
"rank": index,
|
|
152
|
-
"recipe_id": run.recipe.recipe_id,
|
|
153
|
-
"run_id": run.run_id,
|
|
154
|
-
}
|
|
155
|
-
)
|
|
156
|
-
for index, evidence_item in enumerate(sorted_candidates, start=1)
|
|
157
|
-
]
|
|
158
|
-
evidence = apply_budget(ranked, budget)
|
|
159
|
-
stats = {
|
|
160
|
-
"candidates": len(sorted_candidates),
|
|
161
|
-
"returned": len(evidence),
|
|
162
|
-
"fusion_weights": {
|
|
163
|
-
"lexical": recipe_config.lexical_weight,
|
|
164
|
-
"embedding": recipe_config.embedding_weight,
|
|
165
|
-
},
|
|
166
|
-
}
|
|
167
|
-
return RetrievalResult(
|
|
168
|
-
query_text=query_text,
|
|
169
|
-
budget=budget,
|
|
170
|
-
run_id=run.run_id,
|
|
171
|
-
recipe_id=run.recipe.recipe_id,
|
|
172
|
-
backend_id=self.backend_id,
|
|
173
|
-
generated_at=utc_now_iso(),
|
|
174
|
-
evidence=evidence,
|
|
175
|
-
stats=stats,
|
|
176
|
-
)
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
def _ensure_backend_supported(recipe_config: HybridRecipeConfig) -> None:
|
|
180
|
-
"""
|
|
181
|
-
Validate that hybrid backends do not reference the hybrid backend itself.
|
|
182
|
-
|
|
183
|
-
:param recipe_config: Parsed hybrid recipe configuration.
|
|
184
|
-
:type recipe_config: HybridRecipeConfig
|
|
185
|
-
:return: None.
|
|
186
|
-
:rtype: None
|
|
187
|
-
:raises ValueError: If hybrid is used as a component backend.
|
|
188
|
-
"""
|
|
189
|
-
if recipe_config.lexical_backend == HybridBackend.backend_id:
|
|
190
|
-
raise ValueError("Hybrid backend cannot use itself as the lexical backend")
|
|
191
|
-
if recipe_config.embedding_backend == HybridBackend.backend_id:
|
|
192
|
-
raise ValueError("Hybrid backend cannot use itself as the embedding backend")
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
def _resolve_backend(backend_id: str):
|
|
196
|
-
"""
|
|
197
|
-
Resolve a backend by identifier.
|
|
198
|
-
|
|
199
|
-
:param backend_id: Backend identifier.
|
|
200
|
-
:type backend_id: str
|
|
201
|
-
:return: Backend instance.
|
|
202
|
-
:rtype: object
|
|
203
|
-
"""
|
|
204
|
-
from . import get_backend
|
|
205
|
-
|
|
206
|
-
return get_backend(backend_id)
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
def _expand_component_budget(budget: QueryBudget, *, multiplier: int = 5) -> QueryBudget:
|
|
210
|
-
"""
|
|
211
|
-
Expand a final budget to collect more candidates for fusion.
|
|
212
|
-
|
|
213
|
-
:param budget: Final evidence budget.
|
|
214
|
-
:type budget: QueryBudget
|
|
215
|
-
:param multiplier: Candidate expansion multiplier.
|
|
216
|
-
:type multiplier: int
|
|
217
|
-
:return: Expanded budget for component backends.
|
|
218
|
-
:rtype: QueryBudget
|
|
219
|
-
"""
|
|
220
|
-
maximum_total_characters = budget.maximum_total_characters
|
|
221
|
-
expanded_characters = (
|
|
222
|
-
maximum_total_characters * multiplier if maximum_total_characters is not None else None
|
|
223
|
-
)
|
|
224
|
-
expanded_max_items_per_source = (
|
|
225
|
-
budget.max_items_per_source * multiplier
|
|
226
|
-
if budget.max_items_per_source is not None
|
|
227
|
-
else None
|
|
228
|
-
)
|
|
229
|
-
requested_items = budget.max_total_items + budget.offset
|
|
230
|
-
return QueryBudget(
|
|
231
|
-
max_total_items=requested_items * multiplier,
|
|
232
|
-
offset=0,
|
|
233
|
-
maximum_total_characters=expanded_characters,
|
|
234
|
-
max_items_per_source=expanded_max_items_per_source,
|
|
235
|
-
)
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
def _fuse_evidence(
|
|
239
|
-
lexical: List[Evidence],
|
|
240
|
-
embedding: List[Evidence],
|
|
241
|
-
*,
|
|
242
|
-
lexical_weight: float,
|
|
243
|
-
embedding_weight: float,
|
|
244
|
-
) -> List[Evidence]:
|
|
245
|
-
"""
|
|
246
|
-
Fuse lexical and embedding evidence lists into hybrid candidates.
|
|
247
|
-
|
|
248
|
-
:param lexical: Lexical evidence list.
|
|
249
|
-
:type lexical: list[Evidence]
|
|
250
|
-
:param embedding: Embedding evidence list.
|
|
251
|
-
:type embedding: list[Evidence]
|
|
252
|
-
:param lexical_weight: Lexical score weight.
|
|
253
|
-
:type lexical_weight: float
|
|
254
|
-
:param embedding_weight: Embedding score weight.
|
|
255
|
-
:type embedding_weight: float
|
|
256
|
-
:return: Hybrid evidence list.
|
|
257
|
-
:rtype: list[Evidence]
|
|
258
|
-
"""
|
|
259
|
-
merged: Dict[str, Dict[str, Optional[Evidence]]] = {}
|
|
260
|
-
for evidence_item in lexical:
|
|
261
|
-
merged.setdefault(evidence_item.item_id, {})["lexical"] = evidence_item
|
|
262
|
-
for evidence_item in embedding:
|
|
263
|
-
merged.setdefault(evidence_item.item_id, {})["embedding"] = evidence_item
|
|
264
|
-
|
|
265
|
-
candidates: List[Evidence] = []
|
|
266
|
-
for item_id, sources in merged.items():
|
|
267
|
-
lexical_evidence = sources.get("lexical")
|
|
268
|
-
embedding_evidence = sources.get("embedding")
|
|
269
|
-
lexical_score = lexical_evidence.score if lexical_evidence else 0.0
|
|
270
|
-
embedding_score = embedding_evidence.score if embedding_evidence else 0.0
|
|
271
|
-
combined_score = (lexical_score * lexical_weight) + (embedding_score * embedding_weight)
|
|
272
|
-
base_evidence = lexical_evidence or embedding_evidence
|
|
273
|
-
candidates.append(
|
|
274
|
-
Evidence(
|
|
275
|
-
item_id=item_id,
|
|
276
|
-
source_uri=base_evidence.source_uri,
|
|
277
|
-
media_type=base_evidence.media_type,
|
|
278
|
-
score=combined_score,
|
|
279
|
-
rank=1,
|
|
280
|
-
text=base_evidence.text,
|
|
281
|
-
content_ref=base_evidence.content_ref,
|
|
282
|
-
span_start=base_evidence.span_start,
|
|
283
|
-
span_end=base_evidence.span_end,
|
|
284
|
-
stage="hybrid",
|
|
285
|
-
stage_scores={"lexical": lexical_score, "embedding": embedding_score},
|
|
286
|
-
recipe_id="",
|
|
287
|
-
run_id="",
|
|
288
|
-
metadata=base_evidence.metadata,
|
|
289
|
-
hash=base_evidence.hash,
|
|
290
|
-
)
|
|
291
|
-
)
|
|
292
|
-
return candidates
|
biblicus-1.0.0.dist-info/RECORD
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
biblicus/__init__.py,sha256=z9Wif5-ZzIrptsUS8OELW5zG5_R3-4ZcSuVUkfqKbaA,989
|
|
2
|
-
biblicus/__main__.py,sha256=ipfkUoTlocVnrQDM69C7TeBqQxmHVeiWMRaT3G9rtnk,117
|
|
3
|
-
biblicus/chunking.py,sha256=GdJr0skAAI0Su99mr7dXqCgR7eJ0sJu8n2XesVGyddY,13206
|
|
4
|
-
biblicus/cli.py,sha256=DdEL8Uvl38Zn2w4egCxQ4zWNelrI3QDs4qh4tGWGuAI,43793
|
|
5
|
-
biblicus/constants.py,sha256=gAlEVJhxdFj-eWWJrlYbP7H1X3c5gwhrIBq9NQ1Vq_E,371
|
|
6
|
-
biblicus/context.py,sha256=I7L86ag2AbNr_QgiP5YSt1uwwULGx1cH73eR2nE9T3g,10842
|
|
7
|
-
biblicus/corpus.py,sha256=LySjqBpTF_B19nMyGBoeB8AMDlqohcgsBfmJILm3P5c,59546
|
|
8
|
-
biblicus/crawl.py,sha256=n8rXBMnziBK9vtKQQCXYOpBzqsPCswj2PzVJUb370KY,6250
|
|
9
|
-
biblicus/embedding_providers.py,sha256=phWEsq1vryyTFRRs6uZ0sx9FhrqWIkDsS3I52I64zqM,3839
|
|
10
|
-
biblicus/errors.py,sha256=g5TRPdO2XGi-7Wi1C4CXMJ6dTQKYAyP--EWKCv6FGKs,1362
|
|
11
|
-
biblicus/evaluation.py,sha256=5xWpb-8f49Osh9aHzo1ab3AXOmls3Imc5rdnEC0pN-8,8143
|
|
12
|
-
biblicus/evidence_processing.py,sha256=sJe6T1nLxvU0xs9yMH8JZZS19zHXMR-Fpr5lWi5ndUM,6120
|
|
13
|
-
biblicus/extraction.py,sha256=qvrsq6zSz2Kg-cap-18HPHC9pQlqEGo7pyID2uKCyBo,19760
|
|
14
|
-
biblicus/extraction_evaluation.py,sha256=cBC2B1nQCtXmOcVWUhHyO2NJRX8QSDuqhVjEc8PXrOA,10400
|
|
15
|
-
biblicus/frontmatter.py,sha256=uFC4iIrgpnTDiP1gvAnT_CbFYdNuUVtETX7tZ3a9g-Y,2517
|
|
16
|
-
biblicus/hook_logging.py,sha256=IMvde-JhVWrx9tNz3eDJ1CY_rr5Sj7DZ2YNomYCZbz0,5366
|
|
17
|
-
biblicus/hook_manager.py,sha256=ZCAkE5wLvn4lnQz8jho_o0HGEC9KdQd9qitkAEUQRcw,6997
|
|
18
|
-
biblicus/hooks.py,sha256=OHQOmOi7rUcQqYWVeod4oPe8nVLepD7F_SlN7O_-BsE,7863
|
|
19
|
-
biblicus/ignore.py,sha256=fyjt34E6tWNNrm1FseOhgH2MgryyVBQVzxhKL5s4aio,1800
|
|
20
|
-
biblicus/inference.py,sha256=_k00AIPoXD2lruiTB-JUagtY4f_WKcdzA3axwiq1tck,3512
|
|
21
|
-
biblicus/knowledge_base.py,sha256=jpFEvo8gbEuwRUVYRRgQFvRTJZQml0WCHWSeY-CS4ag,6658
|
|
22
|
-
biblicus/models.py,sha256=nvuq5Y96hHvuhMCuHff38wNITyQJam6zFrgFxH5Kh7g,16475
|
|
23
|
-
biblicus/recipes.py,sha256=rqU66QnjOup6O8Y9Yq7XszmpoM0Pyrjw3RrfdnlVqgE,4210
|
|
24
|
-
biblicus/retrieval.py,sha256=qAauHbnQcxtWZzonyOuwgSsffPyZ--0Z8wW-dEYk0z4,4287
|
|
25
|
-
biblicus/sources.py,sha256=FNwW1FWts0jxWIL3AHon7D6c5ZatyG9AGFqzn1Id5mE,8504
|
|
26
|
-
biblicus/time.py,sha256=3BSKOSo7R10K-0Dzrbdtl3fh5_yShTYqfdlKvvdkx7M,485
|
|
27
|
-
biblicus/uris.py,sha256=xXD77lqsT9NxbyzI1spX9Y5a3-U6sLYMnpeSAV7g-nM,2013
|
|
28
|
-
biblicus/user_config.py,sha256=UXUYBNUN4FR37ggZGJG1wv3K8XzsMR8pXW1T18lrivw,6495
|
|
29
|
-
biblicus/_vendor/dotyaml/__init__.py,sha256=OVv6IsuCvsjaUznLzuit4UbSLVg4TiTVm9cOPY1Y2Cs,409
|
|
30
|
-
biblicus/_vendor/dotyaml/interpolation.py,sha256=FVUkdQr_KbXjoFPvGTv6I5v0X5iZkJe5yhZtYKRbYzI,1991
|
|
31
|
-
biblicus/_vendor/dotyaml/loader.py,sha256=vFfnhbvHYYyOKzl5iq2FH97GSHH2GvEHmGiPnE0g0kA,6954
|
|
32
|
-
biblicus/_vendor/dotyaml/transformer.py,sha256=RWNrm_KAsanG409HEIWquTH9i_jz-ZFK9fM86emXeF4,3724
|
|
33
|
-
biblicus/ai/__init__.py,sha256=HY8PKhqRLIDYJYlL9A2JjqKxQaujITNLYgIytNUhnrU,1161
|
|
34
|
-
biblicus/ai/embeddings.py,sha256=n2xlonZOHcmDrP1XMhGcja5Hzr8r87PF-IecH-Yhu98,3703
|
|
35
|
-
biblicus/ai/llm.py,sha256=g724_UAxmicB_W-Z7Uu9SRsI9-aVNZUlYIjvnlE17VE,4712
|
|
36
|
-
biblicus/ai/models.py,sha256=6newnT0NJf3uf9FvWXVC-9Gkk5xRB-PjXDZpeBHA04Y,7857
|
|
37
|
-
biblicus/analysis/__init__.py,sha256=I4LqxfKPKF3DEVmAyagQ8J1RN-ia3fyfKJ9frCllZQE,1385
|
|
38
|
-
biblicus/analysis/base.py,sha256=gB4ilvyMpiWU1m_ydy2dIHGP96ZFIFvVUL9iVDZKPJM,1265
|
|
39
|
-
biblicus/analysis/markov.py,sha256=1OESAJYUkk1F3l3DUryrV8Hx1aa6OTPiXCDdgfAg6pU,63168
|
|
40
|
-
biblicus/analysis/models.py,sha256=FnUAO6n1yjagYlhe2ocRtfb3IZT3W03rrEZ9LdCx7Kc,56214
|
|
41
|
-
biblicus/analysis/profiling.py,sha256=v2B4Tn9WiXRRP_wIADBPRQVKkMc92KXCas7OBa7n0LU,10670
|
|
42
|
-
biblicus/analysis/schema.py,sha256=MCiAQJmijVk8iM8rOUYbzyaDwsMR-Oo86iZU5NCbDMM,435
|
|
43
|
-
biblicus/analysis/topic_modeling.py,sha256=mNBiRMpY5Jtyz8Aj-WXYY8guEghx9jozTfgveinJLoc,22135
|
|
44
|
-
biblicus/backends/__init__.py,sha256=WJSvXc6boEj8PeFr__AC6l_0lfBPJpaVgMbVq30vtZU,1669
|
|
45
|
-
biblicus/backends/base.py,sha256=Erfj9dXg0nkRKnEcNjHR9_0Ddb2B1NvbmRksVm_g1dU,1776
|
|
46
|
-
biblicus/backends/embedding_index_common.py,sha256=wwvp6DjcaAwq-cp2jaO9TvnxDM7JDi-kpgT9uQG9Cxs,11552
|
|
47
|
-
biblicus/backends/embedding_index_file.py,sha256=vibYEWa12Gx-Pm8WnuBnMfBaKiwlAvVW1dEzWJc6JO4,9856
|
|
48
|
-
biblicus/backends/embedding_index_inmemory.py,sha256=LYiNBRmnh4DB8hmlBxMrm_uNmWi46Jt2EvjCuJGm2DI,9711
|
|
49
|
-
biblicus/backends/hybrid.py,sha256=vlsN9N6FZ5A3dQtGXy0W89L4qNQX5EYJNvUuj2-Uqaw,10897
|
|
50
|
-
biblicus/backends/scan.py,sha256=NBlfFHkDS3vdv70bgggK-jHykQC3W_i-RDaa97LEwKE,12548
|
|
51
|
-
biblicus/backends/sqlite_full_text_search.py,sha256=tkFYdKwH6WvAF3En1fvGN_03Ud0_Z1igGxhUW4meCbA,24496
|
|
52
|
-
biblicus/backends/tf_vector.py,sha256=Z5MiEpbZ7A4UtRLYPEU1g8ubjWV5vuyPG40FpElEVzA,15119
|
|
53
|
-
biblicus/context_engine/__init__.py,sha256=cIJWTUwOewW1x13a2n0YKfr4-XU0IwlVdAH_0pckfKk,1337
|
|
54
|
-
biblicus/context_engine/assembler.py,sha256=ot5mdGJTA1nO8uUP_J_yGXgfVqQhFuEQJ3BH-HF4ZaY,42336
|
|
55
|
-
biblicus/context_engine/compaction.py,sha256=2bLaCpT48d1TL7vt9rrcRCgfdHeWWp9LX85Cgij12o0,2921
|
|
56
|
-
biblicus/context_engine/models.py,sha256=jesVd83ZQcatO-7yNlzwKkactSQ-e1znYuWof4rxVFg,12762
|
|
57
|
-
biblicus/context_engine/retrieval.py,sha256=au_mN8VYc_MhIlbMGHfDf2IK0UWAigj7R5NFXFZ0Kz8,4143
|
|
58
|
-
biblicus/extractors/__init__.py,sha256=ci3oldbdQZ8meAfHccM48CqQtZsPSRg3HkPrBSZF15M,2673
|
|
59
|
-
biblicus/extractors/base.py,sha256=ka-nz_1zHPr4TS9sU4JfOoY-PJh7lbHPBOEBrbQFGSc,2171
|
|
60
|
-
biblicus/extractors/deepgram_stt.py,sha256=VI71i4lbE-EFHcvpNcCPRpT8z7A5IuaSrT1UaPyZ8UY,6323
|
|
61
|
-
biblicus/extractors/docling_granite_text.py,sha256=aFNx-HubvaMmVJHbNqk3CR_ilSwN96-phkaENT6E2B0,6879
|
|
62
|
-
biblicus/extractors/docling_smol_text.py,sha256=cSbQcT4O47MMcM6_pmQCvqgC5ferLvaxJnm3v9EQd0A,6811
|
|
63
|
-
biblicus/extractors/markitdown_text.py,sha256=ZvN2TFh65icTTdzCe7L-ZB8zTPP2mxQ4MhOOqSc81Z0,4547
|
|
64
|
-
biblicus/extractors/metadata_text.py,sha256=7FbEPp0K1mXc7FH1_c0KhPhPexF9U6eLd3TVY1vTp1s,3537
|
|
65
|
-
biblicus/extractors/openai_stt.py,sha256=fggErIu6YN6tXbleNTuROhfYi7zDgMd2vD_ecXZ7eXs,7162
|
|
66
|
-
biblicus/extractors/paddleocr_vl_text.py,sha256=59csxihkqK0lELpAtK2YLcfbSUvNGiuOw7CwPa_0l_c,11692
|
|
67
|
-
biblicus/extractors/pass_through_text.py,sha256=DNxkCwpH2bbXjPGPEQwsx8kfqXi6rIxXNY_n3TU2-WI,2777
|
|
68
|
-
biblicus/extractors/pdf_text.py,sha256=YtUphgLVxyWJXew6ZsJ8wBRh67Y5ri4ZTRlMmq3g1Bk,3255
|
|
69
|
-
biblicus/extractors/pipeline.py,sha256=LY6eM3ypw50MDB2cPEQqZrjxkhVvIc6sv4UEhHdNDrE,3208
|
|
70
|
-
biblicus/extractors/rapidocr_text.py,sha256=StvizEha5BkEG7i5KJmnOUtji89p5pghF4w8iQ-WwFk,4776
|
|
71
|
-
biblicus/extractors/select_longest_text.py,sha256=wRveXAfYLdj7CpGuo4RoD7zE6SIfylRCbv40z2azO0k,3702
|
|
72
|
-
biblicus/extractors/select_override.py,sha256=gSpffFmn1ux9pGtFvHD5Uu_LO8TmmJC4L_mvjehiSec,4014
|
|
73
|
-
biblicus/extractors/select_smart_override.py,sha256=-sLMnNoeXbCB3dO9zflQq324eHuLbd6hpveSwduXP-U,6763
|
|
74
|
-
biblicus/extractors/select_text.py,sha256=w0ATmDy3tWWbOObzW87jGZuHbgXllUhotX5XyySLs-o,3395
|
|
75
|
-
biblicus/extractors/unstructured_text.py,sha256=l2S_wD_htu7ZHoJQNQtP-kGlEgOeKV_w2IzAC93lePE,3564
|
|
76
|
-
biblicus/text/__init__.py,sha256=MiaGAY7xWlUCeBzDzNz6pJnSMiU_Ge5EmlSiEzhqTRo,947
|
|
77
|
-
biblicus/text/annotate.py,sha256=asmpj3_s_t8hl6stEg99apmqxAhDTkoPzHhZNggYE3Y,8355
|
|
78
|
-
biblicus/text/extract.py,sha256=pdnUiZWtfCUj7kZK5zhd-tjqokgmhYYheWhyN3iShRU,7669
|
|
79
|
-
biblicus/text/link.py,sha256=2IdOi3WgyBKPFau0bpS1eToV1q2v_6wq5RK5_P_qUDg,20448
|
|
80
|
-
biblicus/text/markup.py,sha256=8jj9aX03HiZTOWdPs_VC4JLpQ7TlPHgGuXj_QUQIHVw,6265
|
|
81
|
-
biblicus/text/models.py,sha256=REp6RowUWFdV-6y437JENP7XtGKt57BOvVtF91KmUqI,10853
|
|
82
|
-
biblicus/text/prompts.py,sha256=-M-8sQ7Dfm1k4j6Kn4ekAuiYe_TkIwLu2VSgpas9rUU,6881
|
|
83
|
-
biblicus/text/redact.py,sha256=tkDRmA0VvOZwMryEmBPLEHf3Z6VHJkkaWjBaNIMyGZ0,8415
|
|
84
|
-
biblicus/text/slice.py,sha256=dlHxGO8c5P8BszXGwlNQoQ-cyWjJf6PfS1LUBJXXGEE,5762
|
|
85
|
-
biblicus/text/tool_loop.py,sha256=w1PGLBvIemOdi6l0ArdYDVL7zgx-RC76bBOO0PKqpt0,11831
|
|
86
|
-
biblicus-1.0.0.dist-info/licenses/LICENSE,sha256=lw44GXFG_Q0fS8m5VoEvv_xtdBXK26pBcbSPUCXee_Q,1078
|
|
87
|
-
biblicus-1.0.0.dist-info/METADATA,sha256=oyWd6igX6I3o46-VjOAUVskj1pLzZ8DovsTV1mqpPoY,30940
|
|
88
|
-
biblicus-1.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
89
|
-
biblicus-1.0.0.dist-info/entry_points.txt,sha256=BZmO4H8Uz00fyi1RAFryOCGfZgX7eHWkY2NE-G54U5A,47
|
|
90
|
-
biblicus-1.0.0.dist-info/top_level.txt,sha256=sUD_XVZwDxZ29-FBv1MknTGh4mgDXznGuP28KJY_WKc,9
|
|
91
|
-
biblicus-1.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|