smart_rag 0.1.0 → 0.2.1
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.
- checksums.yaml +4 -4
- data/.env.example +252 -0
- data/.rspec +2 -0
- data/AGENTS.md +33 -0
- data/API_DOCUMENTATION.md +828 -0
- data/CHANGELOG.md +16 -1
- data/ER-diagram.mmd +144 -0
- data/Gemfile +50 -0
- data/Gemfile.lock +398 -0
- data/Hybrid_Reranking.md +171 -0
- data/README.en.md +420 -28
- data/README.md +534 -63
- data/Rakefile +268 -0
- data/SETUP_GUIDE.md +650 -0
- data/SmartChunking.md +180 -0
- data/USAGE_EXAMPLES.md +1002 -0
- data/config/llm_config.yml +4 -2
- data/config/smart_rag.yml +45 -1
- data/config.ru +15 -0
- data/db/migrations/006_create_text_search_configs.rb +3 -2
- data/db/migrations/008_create_embeddings.rb +5 -4
- data/db/migrations/012_add_metadata_to_source_sections.rb +11 -0
- data/db/migrations/013_create_media_jobs.rb +25 -0
- data/db/migrations/014_add_media_job_operations_indexes.rb +11 -0
- data/db/migrations/015_add_media_leases_and_objects.rb +80 -0
- data/db/migrations/016_add_document_principals_and_staging_references.rb +38 -0
- data/db/migrations/017_add_media_job_request_fingerprint.rb +48 -0
- data/db/seeds/text_search_configs.sql +3 -3
- data/design.md +1057 -0
- data/docs/API_DOCUMENTATION.md +838 -0
- data/docs/DOCUMENTATION_INDEX.en.md +60 -0
- data/docs/DOCUMENTATION_INDEX.md +65 -0
- data/docs/FIX_SUMMARY.md +256 -0
- data/docs/FIX_SUMMARY_COMPLETE.md +273 -0
- data/docs/Hybrid_Reranking.md +171 -0
- data/docs/MIGRATION_GUIDE.md +151 -0
- data/docs/PERFORMANCE_GUIDE.md +58 -0
- data/docs/SETUP_GUIDE.md +659 -0
- data/docs/SmartChunking.md +180 -0
- data/docs/USAGE_EXAMPLES.md +1008 -0
- data/docs/design.md +1057 -0
- data/docs/evidence_pack.md +211 -0
- data/docs/requirements.md +376 -0
- data/docs/retrieval_plan.md +251 -0
- data/docs/smartrag_improvement_plan.md +201 -0
- data/docs/smartrag_refactor.md +216 -0
- data/docs/todo.md +931 -0
- data/examples/common.rb +1 -1
- data/exe/smart-rag-db +163 -0
- data/exe/smart-rag-media-worker +34 -0
- data/lib/smart_rag/config.rb +12 -0
- data/lib/smart_rag/core/document_processor.rb +80 -16
- data/lib/smart_rag/core/local_content_store.rb +51 -0
- data/lib/smart_rag/core/media_extractors.rb +140 -0
- data/lib/smart_rag/core/media_job_queue.rb +353 -0
- data/lib/smart_rag/core/media_metadata_extractor.rb +188 -0
- data/lib/smart_rag/core/media_object_registry.rb +79 -0
- data/lib/smart_rag/core/media_processor.rb +228 -0
- data/lib/smart_rag/core/media_safety_policy.rb +61 -0
- data/lib/smart_rag/core/s3_content_store.rb +78 -0
- data/lib/smart_rag/core/transcript_normalizer.rb +44 -0
- data/lib/smart_rag/core/video_semantic_extractor.rb +130 -0
- data/lib/smart_rag/http_access_policy.rb +86 -0
- data/lib/smart_rag/http_app.rb +188 -0
- data/lib/smart_rag/models/embedding.rb +1 -1
- data/lib/smart_rag/models/research_topic.rb +1 -1
- data/lib/smart_rag/models/research_topic_section.rb +5 -0
- data/lib/smart_rag/models/research_topic_tag.rb +5 -0
- data/lib/smart_rag/models/search_log.rb +1 -1
- data/lib/smart_rag/models/section_fts.rb +5 -0
- data/lib/smart_rag/models/section_tag.rb +5 -0
- data/lib/smart_rag/models/source_document.rb +1 -1
- data/lib/smart_rag/models/source_section.rb +1 -1
- data/lib/smart_rag/models/tag.rb +1 -1
- data/lib/smart_rag/models/text_search_config.rb +5 -0
- data/lib/smart_rag/retrieve.rb +72 -1
- data/lib/smart_rag/services/embedding_service.rb +1 -1
- data/lib/smart_rag/services/fulltext_search_service.rb +11 -13
- data/lib/smart_rag/services/hybrid_search_service.rb +15 -11
- data/lib/smart_rag/services/summarization_service.rb +1 -1
- data/lib/smart_rag/services/tag_service.rb +1 -1
- data/lib/smart_rag/version.rb +1 -1
- data/lib/smart_rag.rb +264 -30
- data/patch_language.rb +27 -0
- data/requirements.md +376 -0
- data/source_documents_export.json +11072 -0
- data/todo.md +931 -0
- data/workers/analyze_content.rb +6 -2
- data/workers/get_embedding.rb +1 -1
- metadata +151 -38
data/workers/analyze_content.rb
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
SmartPrompt.define_worker :analyze_content do
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
# Use local Ollama by default for content analysis/tagging.
|
|
3
|
+
# To use SiliconFlow instead, replace with:
|
|
4
|
+
# use "SiliconFlow"
|
|
5
|
+
# model "Qwen/Qwen3-8B"
|
|
6
|
+
use "OllamaEmbedding"
|
|
7
|
+
model ENV["LLM_MODEL"] || "qwen3"
|
|
4
8
|
prompt params[:content]
|
|
5
9
|
send_msg
|
|
6
10
|
end
|
data/workers/get_embedding.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: smart_rag
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- SmartRAG Team
|
|
@@ -37,20 +37,74 @@ dependencies:
|
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '1.0'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: rack
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '2.2'
|
|
47
|
+
- - "<"
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: '4'
|
|
50
|
+
type: :runtime
|
|
51
|
+
prerelease: false
|
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
53
|
+
requirements:
|
|
54
|
+
- - ">="
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: '2.2'
|
|
57
|
+
- - "<"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '4'
|
|
60
|
+
- !ruby/object:Gem::Dependency
|
|
61
|
+
name: puma
|
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - ">="
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '6.0'
|
|
67
|
+
- - "<"
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '8'
|
|
70
|
+
type: :runtime
|
|
71
|
+
prerelease: false
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
requirements:
|
|
74
|
+
- - ">="
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: '6.0'
|
|
77
|
+
- - "<"
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: '8'
|
|
80
|
+
- !ruby/object:Gem::Dependency
|
|
81
|
+
name: aws-sdk-s3
|
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
|
83
|
+
requirements:
|
|
84
|
+
- - "~>"
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: '1.0'
|
|
87
|
+
type: :runtime
|
|
88
|
+
prerelease: false
|
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
90
|
+
requirements:
|
|
91
|
+
- - "~>"
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: '1.0'
|
|
40
94
|
- !ruby/object:Gem::Dependency
|
|
41
95
|
name: smart_prompt
|
|
42
96
|
requirement: !ruby/object:Gem::Requirement
|
|
43
97
|
requirements:
|
|
44
98
|
- - "~>"
|
|
45
99
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
100
|
+
version: 0.5.4
|
|
47
101
|
type: :runtime
|
|
48
102
|
prerelease: false
|
|
49
103
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
104
|
requirements:
|
|
51
105
|
- - "~>"
|
|
52
106
|
- !ruby/object:Gem::Version
|
|
53
|
-
version:
|
|
107
|
+
version: 0.5.4
|
|
54
108
|
- !ruby/object:Gem::Dependency
|
|
55
109
|
name: concurrent-ruby
|
|
56
110
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -65,20 +119,48 @@ dependencies:
|
|
|
65
119
|
- - "~>"
|
|
66
120
|
- !ruby/object:Gem::Version
|
|
67
121
|
version: '1.0'
|
|
122
|
+
- !ruby/object:Gem::Dependency
|
|
123
|
+
name: ostruct
|
|
124
|
+
requirement: !ruby/object:Gem::Requirement
|
|
125
|
+
requirements:
|
|
126
|
+
- - "~>"
|
|
127
|
+
- !ruby/object:Gem::Version
|
|
128
|
+
version: '0.6'
|
|
129
|
+
type: :runtime
|
|
130
|
+
prerelease: false
|
|
131
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
132
|
+
requirements:
|
|
133
|
+
- - "~>"
|
|
134
|
+
- !ruby/object:Gem::Version
|
|
135
|
+
version: '0.6'
|
|
136
|
+
- !ruby/object:Gem::Dependency
|
|
137
|
+
name: dotenv
|
|
138
|
+
requirement: !ruby/object:Gem::Requirement
|
|
139
|
+
requirements:
|
|
140
|
+
- - "~>"
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: '2.8'
|
|
143
|
+
type: :runtime
|
|
144
|
+
prerelease: false
|
|
145
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
146
|
+
requirements:
|
|
147
|
+
- - "~>"
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: '2.8'
|
|
68
150
|
- !ruby/object:Gem::Dependency
|
|
69
151
|
name: bundler
|
|
70
152
|
requirement: !ruby/object:Gem::Requirement
|
|
71
153
|
requirements:
|
|
72
|
-
- - "
|
|
154
|
+
- - "~>"
|
|
73
155
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '
|
|
156
|
+
version: '4.0'
|
|
75
157
|
type: :development
|
|
76
158
|
prerelease: false
|
|
77
159
|
version_requirements: !ruby/object:Gem::Requirement
|
|
78
160
|
requirements:
|
|
79
|
-
- - "
|
|
161
|
+
- - "~>"
|
|
80
162
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: '
|
|
163
|
+
version: '4.0'
|
|
82
164
|
- !ruby/object:Gem::Dependency
|
|
83
165
|
name: rake
|
|
84
166
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -164,7 +246,7 @@ dependencies:
|
|
|
164
246
|
- !ruby/object:Gem::Version
|
|
165
247
|
version: '6.0'
|
|
166
248
|
- !ruby/object:Gem::Dependency
|
|
167
|
-
name: database_cleaner
|
|
249
|
+
name: database_cleaner
|
|
168
250
|
requirement: !ruby/object:Gem::Requirement
|
|
169
251
|
requirements:
|
|
170
252
|
- - "~>"
|
|
@@ -177,46 +259,33 @@ dependencies:
|
|
|
177
259
|
- - "~>"
|
|
178
260
|
- !ruby/object:Gem::Version
|
|
179
261
|
version: '2.0'
|
|
180
|
-
- !ruby/object:Gem::Dependency
|
|
181
|
-
name: faker
|
|
182
|
-
requirement: !ruby/object:Gem::Requirement
|
|
183
|
-
requirements:
|
|
184
|
-
- - "~>"
|
|
185
|
-
- !ruby/object:Gem::Version
|
|
186
|
-
version: '3.0'
|
|
187
|
-
type: :development
|
|
188
|
-
prerelease: false
|
|
189
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
190
|
-
requirements:
|
|
191
|
-
- - "~>"
|
|
192
|
-
- !ruby/object:Gem::Version
|
|
193
|
-
version: '3.0'
|
|
194
|
-
- !ruby/object:Gem::Dependency
|
|
195
|
-
name: pry
|
|
196
|
-
requirement: !ruby/object:Gem::Requirement
|
|
197
|
-
requirements:
|
|
198
|
-
- - "~>"
|
|
199
|
-
- !ruby/object:Gem::Version
|
|
200
|
-
version: '0.14'
|
|
201
|
-
type: :development
|
|
202
|
-
prerelease: false
|
|
203
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
204
|
-
requirements:
|
|
205
|
-
- - "~>"
|
|
206
|
-
- !ruby/object:Gem::Version
|
|
207
|
-
version: '0.14'
|
|
208
262
|
description: SmartRAG provides intelligent document processing, vector embeddings,
|
|
209
263
|
full-text search, and hybrid retrieval capabilities for enhanced information retrieval
|
|
210
264
|
and question answering.
|
|
211
265
|
email:
|
|
212
266
|
- team@smartrag.com
|
|
213
|
-
executables:
|
|
267
|
+
executables:
|
|
268
|
+
- smart-rag-db
|
|
269
|
+
- smart-rag-media-worker
|
|
214
270
|
extensions: []
|
|
215
271
|
extra_rdoc_files: []
|
|
216
272
|
files:
|
|
273
|
+
- ".env.example"
|
|
274
|
+
- ".rspec"
|
|
275
|
+
- AGENTS.md
|
|
276
|
+
- API_DOCUMENTATION.md
|
|
217
277
|
- CHANGELOG.md
|
|
278
|
+
- ER-diagram.mmd
|
|
279
|
+
- Gemfile
|
|
280
|
+
- Gemfile.lock
|
|
281
|
+
- Hybrid_Reranking.md
|
|
218
282
|
- README.en.md
|
|
219
283
|
- README.md
|
|
284
|
+
- Rakefile
|
|
285
|
+
- SETUP_GUIDE.md
|
|
286
|
+
- SmartChunking.md
|
|
287
|
+
- USAGE_EXAMPLES.md
|
|
288
|
+
- config.ru
|
|
220
289
|
- config/database.yml
|
|
221
290
|
- config/fulltext_search.yml
|
|
222
291
|
- config/llm_config.yml
|
|
@@ -233,8 +302,33 @@ files:
|
|
|
233
302
|
- db/migrations/009_create_search_logs.rb
|
|
234
303
|
- db/migrations/010_add_metadata_to_source_documents.rb
|
|
235
304
|
- db/migrations/011_add_source_fields_to_source_documents.rb
|
|
305
|
+
- db/migrations/012_add_metadata_to_source_sections.rb
|
|
306
|
+
- db/migrations/013_create_media_jobs.rb
|
|
307
|
+
- db/migrations/014_add_media_job_operations_indexes.rb
|
|
308
|
+
- db/migrations/015_add_media_leases_and_objects.rb
|
|
309
|
+
- db/migrations/016_add_document_principals_and_staging_references.rb
|
|
310
|
+
- db/migrations/017_add_media_job_request_fingerprint.rb
|
|
236
311
|
- db/rebuild_fts_complete.sql
|
|
237
312
|
- db/seeds/text_search_configs.sql
|
|
313
|
+
- design.md
|
|
314
|
+
- docs/API_DOCUMENTATION.md
|
|
315
|
+
- docs/DOCUMENTATION_INDEX.en.md
|
|
316
|
+
- docs/DOCUMENTATION_INDEX.md
|
|
317
|
+
- docs/FIX_SUMMARY.md
|
|
318
|
+
- docs/FIX_SUMMARY_COMPLETE.md
|
|
319
|
+
- docs/Hybrid_Reranking.md
|
|
320
|
+
- docs/MIGRATION_GUIDE.md
|
|
321
|
+
- docs/PERFORMANCE_GUIDE.md
|
|
322
|
+
- docs/SETUP_GUIDE.md
|
|
323
|
+
- docs/SmartChunking.md
|
|
324
|
+
- docs/USAGE_EXAMPLES.md
|
|
325
|
+
- docs/design.md
|
|
326
|
+
- docs/evidence_pack.md
|
|
327
|
+
- docs/requirements.md
|
|
328
|
+
- docs/retrieval_plan.md
|
|
329
|
+
- docs/smartrag_improvement_plan.md
|
|
330
|
+
- docs/smartrag_refactor.md
|
|
331
|
+
- docs/todo.md
|
|
238
332
|
- examples/01_quick_start.rb
|
|
239
333
|
- examples/02_document_management.rb
|
|
240
334
|
- examples/03_search_operations.rb
|
|
@@ -243,15 +337,29 @@ files:
|
|
|
243
337
|
- examples/06_error_handling_and_retry.rb
|
|
244
338
|
- examples/README.md
|
|
245
339
|
- examples/common.rb
|
|
340
|
+
- exe/smart-rag-db
|
|
341
|
+
- exe/smart-rag-media-worker
|
|
246
342
|
- lib/smart_rag.rb
|
|
247
343
|
- lib/smart_rag/chunker/markdown_chunker.rb
|
|
248
344
|
- lib/smart_rag/config.rb
|
|
249
345
|
- lib/smart_rag/core/document_processor.rb
|
|
250
346
|
- lib/smart_rag/core/embedding.rb
|
|
251
347
|
- lib/smart_rag/core/fulltext_manager.rb
|
|
348
|
+
- lib/smart_rag/core/local_content_store.rb
|
|
252
349
|
- lib/smart_rag/core/markitdown_bridge.rb
|
|
350
|
+
- lib/smart_rag/core/media_extractors.rb
|
|
351
|
+
- lib/smart_rag/core/media_job_queue.rb
|
|
352
|
+
- lib/smart_rag/core/media_metadata_extractor.rb
|
|
353
|
+
- lib/smart_rag/core/media_object_registry.rb
|
|
354
|
+
- lib/smart_rag/core/media_processor.rb
|
|
355
|
+
- lib/smart_rag/core/media_safety_policy.rb
|
|
253
356
|
- lib/smart_rag/core/query_processor.rb
|
|
357
|
+
- lib/smart_rag/core/s3_content_store.rb
|
|
358
|
+
- lib/smart_rag/core/transcript_normalizer.rb
|
|
359
|
+
- lib/smart_rag/core/video_semantic_extractor.rb
|
|
254
360
|
- lib/smart_rag/errors.rb
|
|
361
|
+
- lib/smart_rag/http_access_policy.rb
|
|
362
|
+
- lib/smart_rag/http_app.rb
|
|
255
363
|
- lib/smart_rag/models.rb
|
|
256
364
|
- lib/smart_rag/models/embedding.rb
|
|
257
365
|
- lib/smart_rag/models/model_base.rb
|
|
@@ -282,12 +390,17 @@ files:
|
|
|
282
390
|
- lib/smart_rag/smart_chunking/structure_detector.rb
|
|
283
391
|
- lib/smart_rag/smart_chunking/tokenizer.rb
|
|
284
392
|
- lib/smart_rag/version.rb
|
|
393
|
+
- patch_language.rb
|
|
394
|
+
- requirements.md
|
|
395
|
+
- source_documents_export.json
|
|
396
|
+
- todo.md
|
|
285
397
|
- workers/analyze_content.rb
|
|
286
398
|
- workers/get_embedding.rb
|
|
287
399
|
homepage: https://github.com/smartrag/smartrag
|
|
288
400
|
licenses:
|
|
289
401
|
- MIT
|
|
290
402
|
metadata:
|
|
403
|
+
homepage_uri: https://github.com/smartrag/smartrag
|
|
291
404
|
source_code_uri: https://github.com/smartrag/smartrag
|
|
292
405
|
changelog_uri: https://github.com/smartrag/smartrag/blob/main/CHANGELOG.md
|
|
293
406
|
rdoc_options: []
|
|
@@ -304,7 +417,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
304
417
|
- !ruby/object:Gem::Version
|
|
305
418
|
version: '0'
|
|
306
419
|
requirements: []
|
|
307
|
-
rubygems_version: 4.0.
|
|
420
|
+
rubygems_version: 4.0.16
|
|
308
421
|
specification_version: 4
|
|
309
422
|
summary: A hybrid RAG (Retrieval-Augmented Generation) system with vector and full-text
|
|
310
423
|
search
|