visual-rag-toolkit 0.1.3__py3-none-any.whl → 0.1.5__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.
- demo/__init__.py +1 -1
- demo/ui/sidebar.py +22 -0
- demo/ui/upload.py +1 -1
- visual_rag/__init__.py +25 -10
- visual_rag/cli/main.py +1 -1
- visual_rag/demo_runner.py +3 -5
- visual_rag/indexing/qdrant_indexer.py +4 -2
- visual_rag/retrieval/multi_vector.py +9 -9
- visual_rag/retrieval/single_stage.py +1 -1
- visual_rag/retrieval/three_stage.py +1 -1
- visual_rag/retrieval/two_stage.py +1 -2
- visual_rag/visualization/saliency.py +2 -2
- {visual_rag_toolkit-0.1.3.dist-info → visual_rag_toolkit-0.1.5.dist-info}/METADATA +5 -2
- {visual_rag_toolkit-0.1.3.dist-info → visual_rag_toolkit-0.1.5.dist-info}/RECORD +17 -18
- demo/example_metadata_mapping_sigir.json +0 -37
- {visual_rag_toolkit-0.1.3.dist-info → visual_rag_toolkit-0.1.5.dist-info}/WHEEL +0 -0
- {visual_rag_toolkit-0.1.3.dist-info → visual_rag_toolkit-0.1.5.dist-info}/entry_points.txt +0 -0
- {visual_rag_toolkit-0.1.3.dist-info → visual_rag_toolkit-0.1.5.dist-info}/licenses/LICENSE +0 -0
demo/__init__.py
CHANGED
demo/ui/sidebar.py
CHANGED
|
@@ -16,6 +16,28 @@ from demo.qdrant_utils import (
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
def render_sidebar():
|
|
19
|
+
# CSS to make sidebar metrics smaller
|
|
20
|
+
st.markdown("""
|
|
21
|
+
<style>
|
|
22
|
+
/* Smaller metrics in sidebar */
|
|
23
|
+
[data-testid="stSidebar"] [data-testid="stMetricValue"] {
|
|
24
|
+
font-size: 1.2rem !important;
|
|
25
|
+
}
|
|
26
|
+
[data-testid="stSidebar"] [data-testid="stMetricLabel"] {
|
|
27
|
+
font-size: 0.75rem !important;
|
|
28
|
+
}
|
|
29
|
+
/* Smaller expander headers in sidebar */
|
|
30
|
+
[data-testid="stSidebar"] [data-testid="stExpander"] summary {
|
|
31
|
+
font-size: 0.9rem !important;
|
|
32
|
+
}
|
|
33
|
+
/* Compact subheaders */
|
|
34
|
+
[data-testid="stSidebar"] h3 {
|
|
35
|
+
font-size: 1rem !important;
|
|
36
|
+
margin-bottom: 0.5rem !important;
|
|
37
|
+
}
|
|
38
|
+
</style>
|
|
39
|
+
""", unsafe_allow_html=True)
|
|
40
|
+
|
|
19
41
|
with st.sidebar:
|
|
20
42
|
st.subheader("🔑 Qdrant Credentials")
|
|
21
43
|
|
demo/ui/upload.py
CHANGED
|
@@ -449,7 +449,7 @@ def process_pdfs(uploaded_files, config):
|
|
|
449
449
|
|
|
450
450
|
if total_uploaded > 0:
|
|
451
451
|
st.session_state["upload_success"] = f"Uploaded {total_uploaded} pages to {collection_name}"
|
|
452
|
-
st.
|
|
452
|
+
st.rerun() # Immediately refresh to show success toast + balloons
|
|
453
453
|
|
|
454
454
|
except Exception as e:
|
|
455
455
|
st.error(f"❌ Processing error: {e}")
|
visual_rag/__init__.py
CHANGED
|
@@ -33,17 +33,17 @@ Each component works independently - use only what you need.
|
|
|
33
33
|
|
|
34
34
|
import logging
|
|
35
35
|
|
|
36
|
-
__version__ = "0.1.
|
|
36
|
+
__version__ = "0.1.5"
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
def setup_logging(level: str = "INFO", format: str = None) -> None:
|
|
40
40
|
"""
|
|
41
41
|
Configure logging for visual_rag package.
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
Args:
|
|
44
44
|
level: Log level ("DEBUG", "INFO", "WARNING", "ERROR")
|
|
45
45
|
format: Custom format string. Default shows time, level, and message.
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
Example:
|
|
48
48
|
>>> import visual_rag
|
|
49
49
|
>>> visual_rag.setup_logging("INFO")
|
|
@@ -51,13 +51,13 @@ def setup_logging(level: str = "INFO", format: str = None) -> None:
|
|
|
51
51
|
"""
|
|
52
52
|
if format is None:
|
|
53
53
|
format = "[%(asctime)s] %(levelname)s - %(message)s"
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
logging.basicConfig(
|
|
56
56
|
level=getattr(logging, level.upper(), logging.INFO),
|
|
57
57
|
format=format,
|
|
58
58
|
datefmt="%H:%M:%S",
|
|
59
59
|
)
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
# Also set the visual_rag logger specifically
|
|
62
62
|
logger = logging.getLogger("visual_rag")
|
|
63
63
|
logger.setLevel(getattr(logging, level.upper(), logging.INFO))
|
|
@@ -111,13 +111,16 @@ try:
|
|
|
111
111
|
except ImportError:
|
|
112
112
|
QdrantAdmin = None
|
|
113
113
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
except ImportError:
|
|
117
|
-
demo = None
|
|
114
|
+
# demo is lazily imported to avoid RuntimeWarning when running as __main__
|
|
115
|
+
# Access via visual_rag.demo() which triggers __getattr__
|
|
118
116
|
|
|
119
117
|
# Config utilities (always available)
|
|
120
|
-
|
|
118
|
+
try:
|
|
119
|
+
from visual_rag.config import get, get_section, load_config
|
|
120
|
+
except ImportError:
|
|
121
|
+
get = None
|
|
122
|
+
get_section = None
|
|
123
|
+
load_config = None
|
|
121
124
|
|
|
122
125
|
__all__ = [
|
|
123
126
|
# Version
|
|
@@ -138,3 +141,15 @@ __all__ = [
|
|
|
138
141
|
# Logging
|
|
139
142
|
"setup_logging",
|
|
140
143
|
]
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def __getattr__(name: str):
|
|
147
|
+
"""Lazy import for demo to avoid RuntimeWarning when running as __main__."""
|
|
148
|
+
if name == "demo":
|
|
149
|
+
try:
|
|
150
|
+
from visual_rag.demo_runner import demo
|
|
151
|
+
|
|
152
|
+
return demo
|
|
153
|
+
except ImportError:
|
|
154
|
+
return None
|
|
155
|
+
raise AttributeError(f"module 'visual_rag' has no attribute {name!r}")
|
visual_rag/cli/main.py
CHANGED
|
@@ -288,7 +288,7 @@ def cmd_search(args):
|
|
|
288
288
|
)
|
|
289
289
|
|
|
290
290
|
# Search
|
|
291
|
-
query_np = query_embedding.detach().cpu().numpy()
|
|
291
|
+
query_np = query_embedding.detach().cpu().float().numpy() # .float() for BFloat16
|
|
292
292
|
if args.strategy == "single_full":
|
|
293
293
|
results = single_stage.search(
|
|
294
294
|
query_embedding=query_np,
|
visual_rag/demo_runner.py
CHANGED
|
@@ -52,13 +52,11 @@ def demo(
|
|
|
52
52
|
cmd = [sys.executable, "-m", "streamlit", "run", str(app_path)]
|
|
53
53
|
cmd += ["--server.address", str(host)]
|
|
54
54
|
cmd += ["--server.port", str(int(port))]
|
|
55
|
-
|
|
55
|
+
# headless=true prevents browser from auto-opening; open_browser overrides
|
|
56
|
+
should_be_headless = headless and not open_browser
|
|
57
|
+
cmd += ["--server.headless", "true" if should_be_headless else "false"]
|
|
56
58
|
cmd += ["--browser.gatherUsageStats", "false"]
|
|
57
59
|
cmd += ["--server.runOnSave", "false"]
|
|
58
|
-
cmd += ["--browser.serverAddress", str(host)]
|
|
59
|
-
if not open_browser:
|
|
60
|
-
cmd += ["--browser.serverPort", str(int(port))]
|
|
61
|
-
cmd += ["--browser.open", "false"]
|
|
62
60
|
|
|
63
61
|
if extra_args:
|
|
64
62
|
cmd += list(extra_args)
|
|
@@ -335,7 +335,9 @@ class QdrantIndexer:
|
|
|
335
335
|
return val.tolist()
|
|
336
336
|
return val
|
|
337
337
|
|
|
338
|
-
def _build_qdrant_points(
|
|
338
|
+
def _build_qdrant_points(
|
|
339
|
+
batch_points: List[Dict[str, Any]],
|
|
340
|
+
) -> List[qdrant_models.PointStruct]:
|
|
339
341
|
qdrant_points: List[qdrant_models.PointStruct] = []
|
|
340
342
|
for p in batch_points:
|
|
341
343
|
global_pooled = p.get("global_pooled_embedding")
|
|
@@ -382,7 +384,7 @@ class QdrantIndexer:
|
|
|
382
384
|
)
|
|
383
385
|
|
|
384
386
|
logger.info(f" ✅ Uploaded {len(points)} points to Qdrant")
|
|
385
|
-
|
|
387
|
+
|
|
386
388
|
if delay_between_batches > 0:
|
|
387
389
|
if _is_cancelled():
|
|
388
390
|
return 0
|
|
@@ -56,14 +56,10 @@ class MultiVectorRetriever:
|
|
|
56
56
|
)
|
|
57
57
|
|
|
58
58
|
qdrant_url = (
|
|
59
|
-
qdrant_url
|
|
60
|
-
or os.getenv("QDRANT_URL")
|
|
61
|
-
or os.getenv("SIGIR_QDRANT_URL") # legacy
|
|
59
|
+
qdrant_url or os.getenv("QDRANT_URL") or os.getenv("SIGIR_QDRANT_URL") # legacy
|
|
62
60
|
)
|
|
63
61
|
if not qdrant_url:
|
|
64
|
-
raise ValueError(
|
|
65
|
-
"QDRANT_URL is required (pass qdrant_url or set env var)."
|
|
66
|
-
)
|
|
62
|
+
raise ValueError("QDRANT_URL is required (pass qdrant_url or set env var).")
|
|
67
63
|
|
|
68
64
|
qdrant_api_key = (
|
|
69
65
|
qdrant_api_key
|
|
@@ -97,7 +93,10 @@ class MultiVectorRetriever:
|
|
|
97
93
|
_ = client.get_collections()
|
|
98
94
|
except Exception as e:
|
|
99
95
|
msg = str(e)
|
|
100
|
-
if
|
|
96
|
+
if (
|
|
97
|
+
"StatusCode.PERMISSION_DENIED" in msg
|
|
98
|
+
or "http2 header with status: 403" in msg
|
|
99
|
+
):
|
|
101
100
|
client = _make_client(False)
|
|
102
101
|
else:
|
|
103
102
|
raise
|
|
@@ -158,9 +157,10 @@ class MultiVectorRetriever:
|
|
|
158
157
|
) -> List[Dict[str, Any]]:
|
|
159
158
|
q = self.embedder.embed_query(query)
|
|
160
159
|
if isinstance(q, torch.Tensor):
|
|
161
|
-
|
|
160
|
+
# .float() converts BFloat16 to Float32 (numpy doesn't support BFloat16)
|
|
161
|
+
query_embedding = q.detach().cpu().float().numpy()
|
|
162
162
|
else:
|
|
163
|
-
query_embedding = np.asarray(q)
|
|
163
|
+
query_embedding = np.asarray(q, dtype=np.float32)
|
|
164
164
|
|
|
165
165
|
return self.search_embedded(
|
|
166
166
|
query_embedding=query_embedding,
|
|
@@ -129,5 +129,5 @@ class SingleStageRetriever:
|
|
|
129
129
|
if isinstance(embedding, torch.Tensor):
|
|
130
130
|
if embedding.dtype == torch.bfloat16:
|
|
131
131
|
return embedding.cpu().float().numpy()
|
|
132
|
-
return embedding.cpu().numpy()
|
|
132
|
+
return embedding.cpu().float().numpy() # .float() for BFloat16 compatibility
|
|
133
133
|
return np.array(embedding, dtype=np.float32)
|
|
@@ -51,7 +51,7 @@ class ThreeStageRetriever:
|
|
|
51
51
|
if isinstance(embedding, torch.Tensor):
|
|
52
52
|
if embedding.dtype == torch.bfloat16:
|
|
53
53
|
return embedding.cpu().float().numpy()
|
|
54
|
-
return embedding.cpu().numpy()
|
|
54
|
+
return embedding.cpu().float().numpy() # .float() for BFloat16 compatibility
|
|
55
55
|
return np.array(embedding, dtype=np.float32)
|
|
56
56
|
|
|
57
57
|
def _infer_vector_is_multivector(self, vector_name: str) -> bool:
|
|
@@ -22,7 +22,6 @@ from typing import Any, Dict, List, Optional, Union
|
|
|
22
22
|
|
|
23
23
|
import numpy as np
|
|
24
24
|
import torch
|
|
25
|
-
|
|
26
25
|
from qdrant_client.http import models as qdrant_models
|
|
27
26
|
from qdrant_client.models import FieldCondition, Filter, MatchAny, MatchValue
|
|
28
27
|
|
|
@@ -419,7 +418,7 @@ class TwoStageRetriever:
|
|
|
419
418
|
if isinstance(embedding, torch.Tensor):
|
|
420
419
|
if embedding.dtype == torch.bfloat16:
|
|
421
420
|
return embedding.cpu().float().numpy()
|
|
422
|
-
return embedding.cpu().numpy()
|
|
421
|
+
return embedding.cpu().float().numpy() # .float() for BFloat16 compatibility
|
|
423
422
|
return np.array(embedding, dtype=np.float32)
|
|
424
423
|
|
|
425
424
|
def build_filter(
|
|
@@ -55,14 +55,14 @@ def generate_saliency_map(
|
|
|
55
55
|
if hasattr(query_embedding, "numpy"):
|
|
56
56
|
query_np = query_embedding.numpy()
|
|
57
57
|
elif hasattr(query_embedding, "cpu"):
|
|
58
|
-
query_np = query_embedding.cpu().numpy()
|
|
58
|
+
query_np = query_embedding.cpu().float().numpy() # .float() for BFloat16
|
|
59
59
|
else:
|
|
60
60
|
query_np = np.array(query_embedding, dtype=np.float32)
|
|
61
61
|
|
|
62
62
|
if hasattr(doc_embedding, "numpy"):
|
|
63
63
|
doc_np = doc_embedding.numpy()
|
|
64
64
|
elif hasattr(doc_embedding, "cpu"):
|
|
65
|
-
doc_np = doc_embedding.cpu().numpy()
|
|
65
|
+
doc_np = doc_embedding.cpu().float().numpy() # .float() for BFloat16
|
|
66
66
|
else:
|
|
67
67
|
doc_np = np.array(doc_embedding, dtype=np.float32)
|
|
68
68
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: visual-rag-toolkit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.5
|
|
4
4
|
Summary: End-to-end visual document retrieval with ColPali, featuring two-stage pooling for scalable search
|
|
5
5
|
Project-URL: Homepage, https://github.com/Ara-Yeroyan/visual-rag-toolkit
|
|
6
6
|
Project-URL: Documentation, https://github.com/Ara-Yeroyan/visual-rag-toolkit#readme
|
|
@@ -88,9 +88,12 @@ Description-Content-Type: text/markdown
|
|
|
88
88
|
[](https://pypi.org/project/visual-rag-toolkit/)
|
|
89
89
|
[](https://pypi.org/project/visual-rag-toolkit/)
|
|
90
90
|
[](LICENSE)
|
|
91
|
+
[](https://huggingface.co/spaces/Yeroyan/visual-rag-toolkit)
|
|
91
92
|
|
|
92
93
|
End-to-end visual document retrieval toolkit featuring **fast multi-stage retrieval** (prefetch with pooled vectors + exact MaxSim reranking).
|
|
93
94
|
|
|
95
|
+
**[Try the Live Demo](https://huggingface.co/spaces/Yeroyan/visual-rag-toolkit)** - Upload PDFs, index to Qdrant, and query with visual retrieval.
|
|
96
|
+
|
|
94
97
|
This repo contains:
|
|
95
98
|
- a **Python package** (`visual_rag`)
|
|
96
99
|
- a **Streamlit demo app** (`demo/`)
|
|
@@ -368,7 +371,7 @@ If you use this toolkit in your research, please cite:
|
|
|
368
371
|
|
|
369
372
|
```bibtex
|
|
370
373
|
@software{visual_rag_toolkit,
|
|
371
|
-
title = {Visual RAG Toolkit: Scalable Visual Document Retrieval with
|
|
374
|
+
title = {Visual RAG Toolkit: Scalable Visual Document Retrieval with 1D Convolutional Pooling},
|
|
372
375
|
author = {Ara Yeroyan},
|
|
373
376
|
year = {2026},
|
|
374
377
|
url = {https://github.com/Ara-Yeroyan/visual-rag-toolkit}
|
|
@@ -11,13 +11,12 @@ benchmarks/vidore_tatdqa_test/dataset_loader.py,sha256=gCCneGAKWQm0WlJHLvGjoMrAb
|
|
|
11
11
|
benchmarks/vidore_tatdqa_test/metrics.py,sha256=cLdYbRt5VcxInO1cN79ve6ZLP3kaSxRkdzRX3IbPPMs,1112
|
|
12
12
|
benchmarks/vidore_tatdqa_test/run_qdrant.py,sha256=_PikeqIYpWPim-KEQOwvT-aqwYoAWASjqJVisi8PfQg,28681
|
|
13
13
|
benchmarks/vidore_tatdqa_test/sweep_eval.py,sha256=d_kbyNTJ1LoFfIVnsZyiRO1nKyMqmRB5jEweZL6kYd4,12688
|
|
14
|
-
demo/__init__.py,sha256=
|
|
14
|
+
demo/__init__.py,sha256=zxRkBWe4opMZXfJxNULuktXdZLuYsZFHeaijgxPe07w,204
|
|
15
15
|
demo/app.py,sha256=nZbCz1mpRK-GZTgOHyz4m4AfgKFgsH-09JwXeL3d3ng,1405
|
|
16
16
|
demo/commands.py,sha256=qxRE2x610yZvcjwEfSKiR9CyFonX-vRxFqQNJCUKfyA,13690
|
|
17
17
|
demo/config.py,sha256=BNkV4NSEEMIV9e6Z-cxds2v247uVmTPCgL-M5ItPzMg,757
|
|
18
18
|
demo/download_models.py,sha256=J10qQt2TpEshVOxvCX_ZSbV7YozIBqDATZnt8fUKFHs,2868
|
|
19
19
|
demo/evaluation.py,sha256=4ixJGg50KAVNiZ_mr5FMVv-QKCrZRooJ80LbrjKXM1s,27467
|
|
20
|
-
demo/example_metadata_mapping_sigir.json,sha256=UCgqZtr6Wnq_vS7zxPxpvuokk9gxOVgKydC7f1lauw8,824
|
|
21
20
|
demo/indexing.py,sha256=qUVEB3QrIolS53Ggxurccbh-QyeLLbzcY5TLyVBVKME,10620
|
|
22
21
|
demo/qdrant_utils.py,sha256=Xh-thLIrACrYkFCrqazYNH0p3vS8_yMCaTbvt4HAy98,7778
|
|
23
22
|
demo/results.py,sha256=dprvxnyHwxJvkAQuh4deaCsiEG1wm0n9svPyxI37vJg,1050
|
|
@@ -26,14 +25,14 @@ demo/ui/__init__.py,sha256=EyBCvnXYfPbdyxJzyp9TjQBeJJUgmOY1yRHkUeC6JFQ,412
|
|
|
26
25
|
demo/ui/benchmark.py,sha256=HiGCN4HrqeOC7L6t2kuzIiyWdcVE_cP2JTxoewrmPSo,14218
|
|
27
26
|
demo/ui/header.py,sha256=J2hXr_nNyg1H9rmrd-EGx3WUl7lYo-Ca30ptgzBCfBs,806
|
|
28
27
|
demo/ui/playground.py,sha256=yRlWWzJgsc596vALn5f0PHhmhtJCMmfv61nYakW75GQ,13672
|
|
29
|
-
demo/ui/sidebar.py,sha256=
|
|
30
|
-
demo/ui/upload.py,sha256=
|
|
31
|
-
visual_rag/__init__.py,sha256=
|
|
28
|
+
demo/ui/sidebar.py,sha256=k7CZ5V7SxwbPOL9nQTWUct5y9mPY-YnLIeBgha7aIEE,8379
|
|
29
|
+
demo/ui/upload.py,sha256=NVmd1-xRj_dfgq14x_eqcN6MjDAZ3hbPBD0YRUz8OOY,20508
|
|
30
|
+
visual_rag/__init__.py,sha256=mOcAcA2rkPVA9GQ63CKFb1g3KatGqILsjfWFj4kkpus,4384
|
|
32
31
|
visual_rag/config.py,sha256=qqSQk2lM5MiRji-6xQNGS2gSiXA4NgyJnCbgGx7uGJQ,7395
|
|
33
|
-
visual_rag/demo_runner.py,sha256=
|
|
32
|
+
visual_rag/demo_runner.py,sha256=ahIKYhHQSLOF_kWbj0u_29SLX4qTdyxb3Smt_cMMfzI,2763
|
|
34
33
|
visual_rag/qdrant_admin.py,sha256=NNczko2S5-K3qATNUxgYn51hNWgWb6boheL7vlCQGpM,7055
|
|
35
34
|
visual_rag/cli/__init__.py,sha256=WgBRXm0VACfLltvVlLcSs3FTM1uQ7Uuw3CVD4-zWZwc,46
|
|
36
|
-
visual_rag/cli/main.py,sha256=
|
|
35
|
+
visual_rag/cli/main.py,sha256=lw2xS96FtdzFnftModGcqRyJYlxFWA0U3aE3C247mBk,21116
|
|
37
36
|
visual_rag/embedding/__init__.py,sha256=7QIENmxwRnwnUzsYKRY3VQTyF3HJkRiL1D7Au9XHF0w,682
|
|
38
37
|
visual_rag/embedding/pooling.py,sha256=x8uY4VHbxEnsJRM2JeOkzPHDiwOkbi5NK4XW21U1hAc,11401
|
|
39
38
|
visual_rag/embedding/visual_embedder.py,sha256=he9JpVHmo_szOiXCwtJdrCseGmf2y5Gi0UEFjwazzVY,23198
|
|
@@ -41,18 +40,18 @@ visual_rag/indexing/__init__.py,sha256=rloBEBt3x8BQut1Tj1n8fuaQ3iXMS3pm64o8n-NlS
|
|
|
41
40
|
visual_rag/indexing/cloudinary_uploader.py,sha256=e-G5du4D7z6mWWl2lahMidG-Wdc-baImFFILTojebpA,8826
|
|
42
41
|
visual_rag/indexing/pdf_processor.py,sha256=V3RAKpwgIFicqUaXzaaljePxh_oP4UV5W0aiJyfv0BY,10247
|
|
43
42
|
visual_rag/indexing/pipeline.py,sha256=1ScpVRlLCq2FWi3IPvlQcIfDCQQ2F64IlRd9ZZHiTaA,25037
|
|
44
|
-
visual_rag/indexing/qdrant_indexer.py,sha256=
|
|
43
|
+
visual_rag/indexing/qdrant_indexer.py,sha256=E9uDwOL3A1nFJhFhJcI8V3JR8FL7nDahEYiv886oG1s,19526
|
|
45
44
|
visual_rag/preprocessing/__init__.py,sha256=rCzfBO0jaVKp6MpPRRused_4gasHfobAbG-139Y806E,121
|
|
46
45
|
visual_rag/preprocessing/crop_empty.py,sha256=iHXITFkRlF40VPJ4k9d432RUAi_89BhAEvK4wOEn96Q,5211
|
|
47
46
|
visual_rag/retrieval/__init__.py,sha256=J9pnbeB83Fqs9n4g3GcIp1VR9dnuyAlcsIDVsf0lSb8,601
|
|
48
|
-
visual_rag/retrieval/multi_vector.py,sha256=
|
|
49
|
-
visual_rag/retrieval/single_stage.py,sha256
|
|
50
|
-
visual_rag/retrieval/three_stage.py,sha256=
|
|
51
|
-
visual_rag/retrieval/two_stage.py,sha256=
|
|
47
|
+
visual_rag/retrieval/multi_vector.py,sha256=oQowl-Yv4cYDj2jroX1nv_uZl8sb0d5VKMmwxL-GlBA,7119
|
|
48
|
+
visual_rag/retrieval/single_stage.py,sha256=-hljRha6kWZAr1IQJVSii4pqiIqk0cHhW68bUyYK41o,4472
|
|
49
|
+
visual_rag/retrieval/three_stage.py,sha256=UDjH92V6ILV_w4bOeN0vCF3SdXYHMml9oN2gl3kfwWk,5998
|
|
50
|
+
visual_rag/retrieval/two_stage.py,sha256=OTTH-MYtwK45RHYMF1esEeciXMTU8h7AQzH68BZVrYE,16822
|
|
52
51
|
visual_rag/visualization/__init__.py,sha256=SITKNvBEseDp7F3K6UzLPA-6OQFqYfY5azS5nlDdihQ,447
|
|
53
|
-
visual_rag/visualization/saliency.py,sha256=
|
|
54
|
-
visual_rag_toolkit-0.1.
|
|
55
|
-
visual_rag_toolkit-0.1.
|
|
56
|
-
visual_rag_toolkit-0.1.
|
|
57
|
-
visual_rag_toolkit-0.1.
|
|
58
|
-
visual_rag_toolkit-0.1.
|
|
52
|
+
visual_rag/visualization/saliency.py,sha256=RuVcF1cPrmzdwfigqhP-e1aqzMr817F64aYucbwT79g,11314
|
|
53
|
+
visual_rag_toolkit-0.1.5.dist-info/METADATA,sha256=66Z99JyOGp5QVb2eJR7U2zjF8Qd6nvRJanhezrbZ-3o,13460
|
|
54
|
+
visual_rag_toolkit-0.1.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
55
|
+
visual_rag_toolkit-0.1.5.dist-info/entry_points.txt,sha256=6Tob1GPg_ILGELjYTPsAnNMZ1W0NS939nfI7xyW2DIY,102
|
|
56
|
+
visual_rag_toolkit-0.1.5.dist-info/licenses/LICENSE,sha256=hEg_weKnHXJakQRR3sw2ygcZ101zCI00zMhBOPb3yfA,1069
|
|
57
|
+
visual_rag_toolkit-0.1.5.dist-info/RECORD,,
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"filenames": {
|
|
3
|
-
"sigir2025-llms": {
|
|
4
|
-
"year": 2025,
|
|
5
|
-
"source": "Conference Paper",
|
|
6
|
-
"district": null,
|
|
7
|
-
"doc_type": "paper",
|
|
8
|
-
"project": "sigir-demo",
|
|
9
|
-
"tags": ["llms", "retrieval"]
|
|
10
|
-
},
|
|
11
|
-
"sigir2025-ginger": {
|
|
12
|
-
"year": 2025,
|
|
13
|
-
"source": "Conference Paper",
|
|
14
|
-
"district": null,
|
|
15
|
-
"doc_type": "paper",
|
|
16
|
-
"project": "sigir-demo",
|
|
17
|
-
"tags": ["ginger", "case-study"]
|
|
18
|
-
},
|
|
19
|
-
"2505.15859v1": {
|
|
20
|
-
"year": 2025,
|
|
21
|
-
"source": "arXiv",
|
|
22
|
-
"district": null,
|
|
23
|
-
"doc_type": "preprint",
|
|
24
|
-
"project": "sigir-demo",
|
|
25
|
-
"tags": ["arxiv", "ranking"]
|
|
26
|
-
},
|
|
27
|
-
"2507.04942v2": {
|
|
28
|
-
"year": 2025,
|
|
29
|
-
"source": "arXiv",
|
|
30
|
-
"district": null,
|
|
31
|
-
"doc_type": "preprint",
|
|
32
|
-
"project": "sigir-demo",
|
|
33
|
-
"tags": ["arxiv", "rag"]
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
File without changes
|
|
File without changes
|
|
File without changes
|