ragcheck-cli 0.2.3__tar.gz → 0.2.5__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.
- {ragcheck_cli-0.2.3/ragcheck_cli.egg-info → ragcheck_cli-0.2.5}/PKG-INFO +1 -1
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/pyproject.toml +85 -85
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/__init__.py +3 -3
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/analyzers/chunkers.py +5 -14
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/cli.py +9 -12
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5/ragcheck_cli.egg-info}/PKG-INFO +1 -1
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/CHANGELOG.md +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/LICENSE +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/MANIFEST.in +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/README.md +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/docs/ARCHITECTURE.md +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/examples/chunk_demo.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/examples/classifier_demo.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/examples/demo.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/examples/embed_demo.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/examples/full_pipeline_demo.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/examples/qa_demo.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/examples/report_demo.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/__main__.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/analyzers/__init__.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/analyzers/failure_classifier.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/analyzers/recommender.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/core/__init__.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/core/config.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/core/config_loader.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/core/document_loader.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/core/embeddings.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/core/progress.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/core/vector_store.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/reports/__init__.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/reports/chunk_visualizer.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/reports/export.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/reports/generator.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/reports/html_report.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/testers/__init__.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/testers/auto_qa.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck/testers/retrieval_tester.py +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck_cli.egg-info/SOURCES.txt +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck_cli.egg-info/dependency_links.txt +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck_cli.egg-info/entry_points.txt +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck_cli.egg-info/requires.txt +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/ragcheck_cli.egg-info/top_level.txt +0 -0
- {ragcheck_cli-0.2.3 → ragcheck_cli-0.2.5}/setup.cfg +0 -0
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
[project]
|
|
2
|
-
name = "ragcheck-cli"
|
|
3
|
-
version = "0.2.
|
|
4
|
-
description = "Lighthouse for RAG systems - diagnose and fix your retrieval pipeline"
|
|
5
|
-
readme = "README.md"
|
|
6
|
-
license = {text = "MIT"}
|
|
7
|
-
requires-python = ">=3.10"
|
|
8
|
-
authors = [
|
|
9
|
-
{name = "Pranay Mane", email = "pranaymane78@gmail.com"},
|
|
10
|
-
]
|
|
11
|
-
keywords = ["rag", "llm", "evaluation", "retrieval", "ai", "chunking", "diagnostics"]
|
|
12
|
-
classifiers = [
|
|
13
|
-
"Development Status :: 3 - Alpha",
|
|
14
|
-
"Intended Audience :: Developers",
|
|
15
|
-
"License :: OSI Approved :: MIT License",
|
|
16
|
-
"Programming Language :: Python :: 3",
|
|
17
|
-
"Programming Language :: Python :: 3.11",
|
|
18
|
-
"Programming Language :: Python :: 3.12",
|
|
19
|
-
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
20
|
-
"Topic :: Software Development :: Quality Assurance",
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
dependencies = [
|
|
24
|
-
"typer>=0.12.0",
|
|
25
|
-
"rich>=13.0.0",
|
|
26
|
-
"jinja2>=3.1.0",
|
|
27
|
-
"nltk>=3.9.0",
|
|
28
|
-
"pydantic>=2.5.0",
|
|
29
|
-
"litellm>=1.0.0",
|
|
30
|
-
"sentence-transformers>=2.2.0",
|
|
31
|
-
"chromadb>=0.4.0",
|
|
32
|
-
"PyYAML>=6.0",
|
|
33
|
-
"transformers>=4.30.0",
|
|
34
|
-
"pdfplumber>=0.10.0",
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
[project.optional-dependencies]
|
|
38
|
-
pdf = ["PyPDF2>=3.0.0"]
|
|
39
|
-
export = ["playwright>=1.40.0"]
|
|
40
|
-
ragas = ["ragas>=0.4.0,<0.5.0"]
|
|
41
|
-
|
|
42
|
-
[project.scripts]
|
|
43
|
-
ragcheck = "ragcheck.cli:app"
|
|
44
|
-
|
|
45
|
-
[project.urls]
|
|
46
|
-
Homepage = "https://github.com/pranay7863/ragcheck"
|
|
47
|
-
Documentation = "https://github.com/pranay7863/ragcheck/blob/main/README.md"
|
|
48
|
-
Repository = "https://github.com/pranay7863/ragcheck"
|
|
49
|
-
Issues = "https://github.com/pranay7863/ragcheck/issues"
|
|
50
|
-
|
|
51
|
-
[build-system]
|
|
52
|
-
requires = ["setuptools>=61.0", "wheel"]
|
|
53
|
-
build-backend = "setuptools.build_meta"
|
|
54
|
-
|
|
55
|
-
[tool.setuptools.packages.find]
|
|
56
|
-
where = ["."]
|
|
57
|
-
include = ["ragcheck*"]
|
|
58
|
-
|
|
59
|
-
[tool.ruff]
|
|
60
|
-
line-length = 100
|
|
61
|
-
target-version = "py311"
|
|
62
|
-
|
|
63
|
-
[tool.ruff.lint]
|
|
64
|
-
select = ["E", "F", "I", "N", "W", "UP", "B", "C4", "SIM"]
|
|
65
|
-
|
|
66
|
-
[tool.ruff.lint.pydocstyle]
|
|
67
|
-
convention = "google"
|
|
68
|
-
|
|
69
|
-
[tool.mypy]
|
|
70
|
-
python_version = "3.11"
|
|
71
|
-
strict = true
|
|
72
|
-
warn_return_any = true
|
|
73
|
-
warn_unused_configs = true
|
|
74
|
-
|
|
75
|
-
[tool.pytest.ini_options]
|
|
76
|
-
testpaths = ["tests"]
|
|
77
|
-
asyncio_mode = "auto"
|
|
78
|
-
|
|
79
|
-
[dependency-groups]
|
|
80
|
-
dev = [
|
|
81
|
-
"pytest>=9.0.3",
|
|
82
|
-
"pytest-cov>=7.1.0",
|
|
83
|
-
"ruff>=0.15.15",
|
|
84
|
-
"twine>=6.2.0",
|
|
85
|
-
]
|
|
1
|
+
[project]
|
|
2
|
+
name = "ragcheck-cli"
|
|
3
|
+
version = "0.2.5"
|
|
4
|
+
description = "Lighthouse for RAG systems - diagnose and fix your retrieval pipeline"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = {text = "MIT"}
|
|
7
|
+
requires-python = ">=3.10"
|
|
8
|
+
authors = [
|
|
9
|
+
{name = "Pranay Mane", email = "pranaymane78@gmail.com"},
|
|
10
|
+
]
|
|
11
|
+
keywords = ["rag", "llm", "evaluation", "retrieval", "ai", "chunking", "diagnostics"]
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Development Status :: 3 - Alpha",
|
|
14
|
+
"Intended Audience :: Developers",
|
|
15
|
+
"License :: OSI Approved :: MIT License",
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"Programming Language :: Python :: 3.11",
|
|
18
|
+
"Programming Language :: Python :: 3.12",
|
|
19
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
20
|
+
"Topic :: Software Development :: Quality Assurance",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
dependencies = [
|
|
24
|
+
"typer>=0.12.0",
|
|
25
|
+
"rich>=13.0.0",
|
|
26
|
+
"jinja2>=3.1.0",
|
|
27
|
+
"nltk>=3.9.0",
|
|
28
|
+
"pydantic>=2.5.0",
|
|
29
|
+
"litellm>=1.0.0",
|
|
30
|
+
"sentence-transformers>=2.2.0",
|
|
31
|
+
"chromadb>=0.4.0",
|
|
32
|
+
"PyYAML>=6.0",
|
|
33
|
+
"transformers>=4.30.0",
|
|
34
|
+
"pdfplumber>=0.10.0",
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
[project.optional-dependencies]
|
|
38
|
+
pdf = ["PyPDF2>=3.0.0"]
|
|
39
|
+
export = ["playwright>=1.40.0"]
|
|
40
|
+
ragas = ["ragas>=0.4.0,<0.5.0"]
|
|
41
|
+
|
|
42
|
+
[project.scripts]
|
|
43
|
+
ragcheck = "ragcheck.cli:app"
|
|
44
|
+
|
|
45
|
+
[project.urls]
|
|
46
|
+
Homepage = "https://github.com/pranay7863/ragcheck"
|
|
47
|
+
Documentation = "https://github.com/pranay7863/ragcheck/blob/main/README.md"
|
|
48
|
+
Repository = "https://github.com/pranay7863/ragcheck"
|
|
49
|
+
Issues = "https://github.com/pranay7863/ragcheck/issues"
|
|
50
|
+
|
|
51
|
+
[build-system]
|
|
52
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
53
|
+
build-backend = "setuptools.build_meta"
|
|
54
|
+
|
|
55
|
+
[tool.setuptools.packages.find]
|
|
56
|
+
where = ["."]
|
|
57
|
+
include = ["ragcheck*"]
|
|
58
|
+
|
|
59
|
+
[tool.ruff]
|
|
60
|
+
line-length = 100
|
|
61
|
+
target-version = "py311"
|
|
62
|
+
|
|
63
|
+
[tool.ruff.lint]
|
|
64
|
+
select = ["E", "F", "I", "N", "W", "UP", "B", "C4", "SIM"]
|
|
65
|
+
|
|
66
|
+
[tool.ruff.lint.pydocstyle]
|
|
67
|
+
convention = "google"
|
|
68
|
+
|
|
69
|
+
[tool.mypy]
|
|
70
|
+
python_version = "3.11"
|
|
71
|
+
strict = true
|
|
72
|
+
warn_return_any = true
|
|
73
|
+
warn_unused_configs = true
|
|
74
|
+
|
|
75
|
+
[tool.pytest.ini_options]
|
|
76
|
+
testpaths = ["tests"]
|
|
77
|
+
asyncio_mode = "auto"
|
|
78
|
+
|
|
79
|
+
[dependency-groups]
|
|
80
|
+
dev = [
|
|
81
|
+
"pytest>=9.0.3",
|
|
82
|
+
"pytest-cov>=7.1.0",
|
|
83
|
+
"ruff>=0.15.15",
|
|
84
|
+
"twine>=6.2.0",
|
|
85
|
+
]
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"""ragcheck — Lighthouse for RAG systems."""
|
|
2
|
-
|
|
3
|
-
__version__ = "0.2.
|
|
1
|
+
"""ragcheck — Lighthouse for RAG systems."""
|
|
2
|
+
|
|
3
|
+
__version__ = "0.2.5"
|
|
@@ -45,20 +45,11 @@ class Chunker:
|
|
|
45
45
|
|
|
46
46
|
# Legal document separators (in order of preference)
|
|
47
47
|
separators = [
|
|
48
|
-
r"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
r"
|
|
52
|
-
|
|
53
|
-
CHAPTER\s+[IVX]+", # CHAPTER headers
|
|
54
|
-
r"
|
|
55
|
-
|
|
56
|
-
\d+\s+\.", # Numbered paragraphs
|
|
57
|
-
r"
|
|
58
|
-
|
|
59
|
-
", # Double newline (paragraphs)
|
|
60
|
-
r"
|
|
61
|
-
", # Single newline
|
|
48
|
+
r"\n\nSECTION\s+\d+", # SECTION headers
|
|
49
|
+
r"\n\nCHAPTER\s+[IVX]+", # CHAPTER headers
|
|
50
|
+
r"\n\n\d+\s+\.", # Numbered paragraphs
|
|
51
|
+
r"\n\n", # Double newline (paragraphs)
|
|
52
|
+
r"\n", # Single newline
|
|
62
53
|
r"\.\s+", # Sentence end
|
|
63
54
|
]
|
|
64
55
|
|
|
@@ -146,14 +146,11 @@ def run(
|
|
|
146
146
|
if not questions:
|
|
147
147
|
# FALLBACK: Generate meaningful questions from chunk content
|
|
148
148
|
warnings.warn(
|
|
149
|
-
"LLM question generation failed. Using content-based fallback questions.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
"
|
|
154
|
-
" 2. Run: set GROQ_API_KEY=your_key (Windows)
|
|
155
|
-
"
|
|
156
|
-
" 3. Or ensure Ollama is running: ollama run phi3:mini",
|
|
149
|
+
"""LLM question generation failed. Using content-based fallback questions.
|
|
150
|
+
To use a real LLM:
|
|
151
|
+
1. Get a free Groq key: https://console.groq.com/keys
|
|
152
|
+
2. Run: set GROQ_API_KEY=your_key (Windows)
|
|
153
|
+
3. Or ensure Ollama is running: ollama run phi3:mini""",
|
|
157
154
|
UserWarning,
|
|
158
155
|
)
|
|
159
156
|
questions = generate_dummy_questions([c.text for c in chunks])
|
|
@@ -211,12 +208,12 @@ def run(
|
|
|
211
208
|
# Summary
|
|
212
209
|
score = retrieval_results["score"]
|
|
213
210
|
color = "green" if score >= 80 else "yellow" if score >= 60 else "red"
|
|
214
|
-
console.print(f"
|
|
215
|
-
|
|
211
|
+
console.print(f"\n[{color}]Tests: {retrieval_results['passed']}/{retrieval_results['total']} passed | Score: {score}%[/[{color}]]")
|
|
212
|
+
|
|
216
213
|
|
|
217
214
|
if score < 100:
|
|
218
|
-
console.print("
|
|
219
|
-
|
|
215
|
+
console.print("\n[bold]Top Recommendations:[/bold]")
|
|
216
|
+
|
|
220
217
|
for rec in recommendations[:3]:
|
|
221
218
|
console.print(f" • {rec['title']}: {rec['description'][:60]}...")
|
|
222
219
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|