maglev-rb 0.1.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 (45) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +408 -0
  4. data/README.zh-CN.md +408 -0
  5. data/lib/generators/maglev/install/install_generator.rb +70 -0
  6. data/lib/maglev/active_record_extension.rb +100 -0
  7. data/lib/maglev/adapters/ruby_llm_attachment_extractor.rb +15 -0
  8. data/lib/maglev/adapters/ruby_llm_embedding.rb +22 -0
  9. data/lib/maglev/adapters/ruby_llm_generation.rb +22 -0
  10. data/lib/maglev/adapters/ruby_llm_provider.rb +64 -0
  11. data/lib/maglev/answerer.rb +58 -0
  12. data/lib/maglev/attachment_extractor.rb +106 -0
  13. data/lib/maglev/authorization.rb +43 -0
  14. data/lib/maglev/chunk.rb +14 -0
  15. data/lib/maglev/chunker.rb +58 -0
  16. data/lib/maglev/configuration.rb +76 -0
  17. data/lib/maglev/content_source_graph.rb +66 -0
  18. data/lib/maglev/context_assembler.rb +94 -0
  19. data/lib/maglev/context_preview.rb +13 -0
  20. data/lib/maglev/dependency_graph.rb +129 -0
  21. data/lib/maglev/embedding_adapter.rb +9 -0
  22. data/lib/maglev/errors.rb +21 -0
  23. data/lib/maglev/extracted_document.rb +36 -0
  24. data/lib/maglev/generation_adapter.rb +9 -0
  25. data/lib/maglev/indexer.rb +175 -0
  26. data/lib/maglev/knowledge_config.rb +136 -0
  27. data/lib/maglev/prompt_builder.rb +27 -0
  28. data/lib/maglev/provider_call.rb +49 -0
  29. data/lib/maglev/provider_configuration.rb +18 -0
  30. data/lib/maglev/railtie.rb +19 -0
  31. data/lib/maglev/reindex_job.rb +16 -0
  32. data/lib/maglev/response.rb +26 -0
  33. data/lib/maglev/retriever.rb +89 -0
  34. data/lib/maglev/schema_compiler.rb +51 -0
  35. data/lib/maglev/search_result.rb +22 -0
  36. data/lib/maglev/snapshot.rb +14 -0
  37. data/lib/maglev/snapshot_builder.rb +204 -0
  38. data/lib/maglev/vector_stores/base.rb +31 -0
  39. data/lib/maglev/vector_stores/document.rb +39 -0
  40. data/lib/maglev/vector_stores/memory.rb +76 -0
  41. data/lib/maglev/vector_stores/pgvector.rb +94 -0
  42. data/lib/maglev/version.rb +5 -0
  43. data/lib/maglev.rb +37 -0
  44. data/lib/tasks/maglev.rake +31 -0
  45. metadata +202 -0
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :maglev do
4
+ desc "Reindex one Maglev model: rails maglev:reindex[ModelName]"
5
+ task :reindex, [:model_name] => :environment do |_task, args|
6
+ model_name = args[:model_name]
7
+ raise ArgumentError, "Usage: rails maglev:reindex[ModelName]" if model_name.nil? || model_name.empty?
8
+
9
+ model = model_name.constantize
10
+ model.find_each { |record| Maglev::Indexer.new(record).index }
11
+ end
12
+
13
+ desc "Reindex all configured Maglev models"
14
+ task reindex_all: :environment do
15
+ ActiveRecord::Base.descendants.each do |model|
16
+ next unless model.respond_to?(:maglev_config) && model.maglev_config
17
+
18
+ model.find_each { |record| Maglev::Indexer.new(record).index }
19
+ end
20
+ end
21
+
22
+ desc "Show configured Maglev models"
23
+ task status: :environment do
24
+ models = ActiveRecord::Base.descendants.select { |model| model.respond_to?(:maglev_config) && model.maglev_config }
25
+ puts "Maglev configured models:"
26
+ models.each do |model|
27
+ schema = model.maglev_schema
28
+ puts "- #{schema.fetch(:model)} fields=#{schema.fetch(:exposed_attributes).join(",")}"
29
+ end
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,202 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: maglev-rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Maglev contributors
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: neighbor
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.6'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.6'
26
+ - !ruby/object:Gem::Dependency
27
+ name: rails
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '7.1'
33
+ - - "<"
34
+ - !ruby/object:Gem::Version
35
+ version: '9.0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '7.1'
43
+ - - "<"
44
+ - !ruby/object:Gem::Version
45
+ version: '9.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: ruby_llm
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.0'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.0'
60
+ - !ruby/object:Gem::Dependency
61
+ name: pg
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.5'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.5'
74
+ - !ruby/object:Gem::Dependency
75
+ name: rake
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '13.0'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '13.0'
88
+ - !ruby/object:Gem::Dependency
89
+ name: rubocop
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.87'
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.87'
102
+ - !ruby/object:Gem::Dependency
103
+ name: rspec-rails
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '7.0'
109
+ type: :development
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '7.0'
116
+ - !ruby/object:Gem::Dependency
117
+ name: standard
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '1.44'
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '1.44'
130
+ description: Maglev adds semantic search and grounded RAG to ActiveRecord object graphs.
131
+ executables: []
132
+ extensions: []
133
+ extra_rdoc_files: []
134
+ files:
135
+ - LICENSE.txt
136
+ - README.md
137
+ - README.zh-CN.md
138
+ - lib/generators/maglev/install/install_generator.rb
139
+ - lib/maglev.rb
140
+ - lib/maglev/active_record_extension.rb
141
+ - lib/maglev/adapters/ruby_llm_attachment_extractor.rb
142
+ - lib/maglev/adapters/ruby_llm_embedding.rb
143
+ - lib/maglev/adapters/ruby_llm_generation.rb
144
+ - lib/maglev/adapters/ruby_llm_provider.rb
145
+ - lib/maglev/answerer.rb
146
+ - lib/maglev/attachment_extractor.rb
147
+ - lib/maglev/authorization.rb
148
+ - lib/maglev/chunk.rb
149
+ - lib/maglev/chunker.rb
150
+ - lib/maglev/configuration.rb
151
+ - lib/maglev/content_source_graph.rb
152
+ - lib/maglev/context_assembler.rb
153
+ - lib/maglev/context_preview.rb
154
+ - lib/maglev/dependency_graph.rb
155
+ - lib/maglev/embedding_adapter.rb
156
+ - lib/maglev/errors.rb
157
+ - lib/maglev/extracted_document.rb
158
+ - lib/maglev/generation_adapter.rb
159
+ - lib/maglev/indexer.rb
160
+ - lib/maglev/knowledge_config.rb
161
+ - lib/maglev/prompt_builder.rb
162
+ - lib/maglev/provider_call.rb
163
+ - lib/maglev/provider_configuration.rb
164
+ - lib/maglev/railtie.rb
165
+ - lib/maglev/reindex_job.rb
166
+ - lib/maglev/response.rb
167
+ - lib/maglev/retriever.rb
168
+ - lib/maglev/schema_compiler.rb
169
+ - lib/maglev/search_result.rb
170
+ - lib/maglev/snapshot.rb
171
+ - lib/maglev/snapshot_builder.rb
172
+ - lib/maglev/vector_stores/base.rb
173
+ - lib/maglev/vector_stores/document.rb
174
+ - lib/maglev/vector_stores/memory.rb
175
+ - lib/maglev/vector_stores/pgvector.rb
176
+ - lib/maglev/version.rb
177
+ - lib/tasks/maglev.rake
178
+ homepage: https://github.com/benjis/maglev
179
+ licenses:
180
+ - MIT
181
+ metadata:
182
+ homepage_uri: https://github.com/benjis/maglev
183
+ source_code_uri: https://github.com/benjis/maglev
184
+ rubygems_mfa_required: 'true'
185
+ rdoc_options: []
186
+ require_paths:
187
+ - lib
188
+ required_ruby_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: 3.2.0
193
+ required_rubygems_version: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ requirements: []
199
+ rubygems_version: 4.0.10
200
+ specification_version: 4
201
+ summary: Rails-native semantic knowledge layer for ActiveRecord object graphs.
202
+ test_files: []