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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/.env.example +252 -0
  3. data/.rspec +2 -0
  4. data/AGENTS.md +33 -0
  5. data/API_DOCUMENTATION.md +828 -0
  6. data/CHANGELOG.md +16 -1
  7. data/ER-diagram.mmd +144 -0
  8. data/Gemfile +50 -0
  9. data/Gemfile.lock +398 -0
  10. data/Hybrid_Reranking.md +171 -0
  11. data/README.en.md +420 -28
  12. data/README.md +534 -63
  13. data/Rakefile +268 -0
  14. data/SETUP_GUIDE.md +650 -0
  15. data/SmartChunking.md +180 -0
  16. data/USAGE_EXAMPLES.md +1002 -0
  17. data/config/llm_config.yml +4 -2
  18. data/config/smart_rag.yml +45 -1
  19. data/config.ru +15 -0
  20. data/db/migrations/006_create_text_search_configs.rb +3 -2
  21. data/db/migrations/008_create_embeddings.rb +5 -4
  22. data/db/migrations/012_add_metadata_to_source_sections.rb +11 -0
  23. data/db/migrations/013_create_media_jobs.rb +25 -0
  24. data/db/migrations/014_add_media_job_operations_indexes.rb +11 -0
  25. data/db/migrations/015_add_media_leases_and_objects.rb +80 -0
  26. data/db/migrations/016_add_document_principals_and_staging_references.rb +38 -0
  27. data/db/migrations/017_add_media_job_request_fingerprint.rb +48 -0
  28. data/db/seeds/text_search_configs.sql +3 -3
  29. data/design.md +1057 -0
  30. data/docs/API_DOCUMENTATION.md +838 -0
  31. data/docs/DOCUMENTATION_INDEX.en.md +60 -0
  32. data/docs/DOCUMENTATION_INDEX.md +65 -0
  33. data/docs/FIX_SUMMARY.md +256 -0
  34. data/docs/FIX_SUMMARY_COMPLETE.md +273 -0
  35. data/docs/Hybrid_Reranking.md +171 -0
  36. data/docs/MIGRATION_GUIDE.md +151 -0
  37. data/docs/PERFORMANCE_GUIDE.md +58 -0
  38. data/docs/SETUP_GUIDE.md +659 -0
  39. data/docs/SmartChunking.md +180 -0
  40. data/docs/USAGE_EXAMPLES.md +1008 -0
  41. data/docs/design.md +1057 -0
  42. data/docs/evidence_pack.md +211 -0
  43. data/docs/requirements.md +376 -0
  44. data/docs/retrieval_plan.md +251 -0
  45. data/docs/smartrag_improvement_plan.md +201 -0
  46. data/docs/smartrag_refactor.md +216 -0
  47. data/docs/todo.md +931 -0
  48. data/examples/common.rb +1 -1
  49. data/exe/smart-rag-db +163 -0
  50. data/exe/smart-rag-media-worker +34 -0
  51. data/lib/smart_rag/config.rb +12 -0
  52. data/lib/smart_rag/core/document_processor.rb +80 -16
  53. data/lib/smart_rag/core/local_content_store.rb +51 -0
  54. data/lib/smart_rag/core/media_extractors.rb +140 -0
  55. data/lib/smart_rag/core/media_job_queue.rb +353 -0
  56. data/lib/smart_rag/core/media_metadata_extractor.rb +188 -0
  57. data/lib/smart_rag/core/media_object_registry.rb +79 -0
  58. data/lib/smart_rag/core/media_processor.rb +228 -0
  59. data/lib/smart_rag/core/media_safety_policy.rb +61 -0
  60. data/lib/smart_rag/core/s3_content_store.rb +78 -0
  61. data/lib/smart_rag/core/transcript_normalizer.rb +44 -0
  62. data/lib/smart_rag/core/video_semantic_extractor.rb +130 -0
  63. data/lib/smart_rag/http_access_policy.rb +86 -0
  64. data/lib/smart_rag/http_app.rb +188 -0
  65. data/lib/smart_rag/models/embedding.rb +1 -1
  66. data/lib/smart_rag/models/research_topic.rb +1 -1
  67. data/lib/smart_rag/models/research_topic_section.rb +5 -0
  68. data/lib/smart_rag/models/research_topic_tag.rb +5 -0
  69. data/lib/smart_rag/models/search_log.rb +1 -1
  70. data/lib/smart_rag/models/section_fts.rb +5 -0
  71. data/lib/smart_rag/models/section_tag.rb +5 -0
  72. data/lib/smart_rag/models/source_document.rb +1 -1
  73. data/lib/smart_rag/models/source_section.rb +1 -1
  74. data/lib/smart_rag/models/tag.rb +1 -1
  75. data/lib/smart_rag/models/text_search_config.rb +5 -0
  76. data/lib/smart_rag/retrieve.rb +72 -1
  77. data/lib/smart_rag/services/embedding_service.rb +1 -1
  78. data/lib/smart_rag/services/fulltext_search_service.rb +11 -13
  79. data/lib/smart_rag/services/hybrid_search_service.rb +15 -11
  80. data/lib/smart_rag/services/summarization_service.rb +1 -1
  81. data/lib/smart_rag/services/tag_service.rb +1 -1
  82. data/lib/smart_rag/version.rb +1 -1
  83. data/lib/smart_rag.rb +264 -30
  84. data/patch_language.rb +27 -0
  85. data/requirements.md +376 -0
  86. data/source_documents_export.json +11072 -0
  87. data/todo.md +931 -0
  88. data/workers/analyze_content.rb +6 -2
  89. data/workers/get_embedding.rb +1 -1
  90. metadata +151 -38
@@ -1,6 +1,10 @@
1
1
  SmartPrompt.define_worker :analyze_content do
2
- use "SiliconFlow"
3
- model "Qwen/Qwen3-8B"
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
@@ -3,5 +3,5 @@ SmartPrompt.define_worker :get_embedding do
3
3
  use "OllamaEmbedding"
4
4
  model ENV["EMBEDDING_MODEL"] || "qwen3-embedding"
5
5
  prompt params[:text]
6
- embeddings(1024)
6
+ embeddings(ENV.fetch("EMBEDDING_DIMENSIONS", "4096").to_i)
7
7
  end
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.0
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: '0.1'
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: '0.1'
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: '2.0'
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: '2.0'
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-sequel
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.6
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