langchainrb_rails 0.1.4 → 0.1.5
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/CHANGELOG.md +3 -0
- data/Gemfile.lock +1 -1
- data/README.md +5 -0
- data/lib/langchainrb_rails/active_record/hooks.rb +1 -1
- data/lib/langchainrb_rails/generators/langchainrb_rails/pgvector_generator.rb +1 -1
- data/lib/langchainrb_rails/generators/langchainrb_rails/qdrant_generator.rb +54 -0
- data/lib/langchainrb_rails/generators/langchainrb_rails/templates/qdrant_initializer.rb.tt +10 -0
- data/lib/langchainrb_rails/railtie.rb +1 -0
- data/lib/langchainrb_rails/version.rb +1 -1
- data/lib/langchainrb_rails.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6bb3982f419d252f6e94018548685566d9775993ad6349957211a4d686e9a10c
|
4
|
+
data.tar.gz: 783c3d1683d654903f745aa6b1fd973787b03581792a1292a0d5724c6983eda8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1fe4ad36c5c12c7260cff5bf29046330d2e649a0f8d96707b13831f09c2c185cf88c5a202f3621eb03cb87fae1df6f7bb75a6bdac5cd9471a4e4637daaafa5f
|
7
|
+
data.tar.gz: f0effcbf9679194a32ece6ff84cc26cf0c5cea5956c9a51ee1a33ba3e32bf4ea56807bba9a463b9edc227d1cb572508bfad70e3a1e8063c5f374e12e1e97d834
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -115,6 +115,11 @@ rails generate langchainrb_rails:pgvector --model=Product --llm=openai
|
|
115
115
|
rails generate langchainrb_rails:pinecone --model=Product --llm=openai
|
116
116
|
```
|
117
117
|
|
118
|
+
### Qdrant Generator - adds vectorsearch to your ActiveRecord model
|
119
|
+
```bash
|
120
|
+
rails generate langchainrb_rails:qdrant --model=Product --llm=openai
|
121
|
+
```
|
122
|
+
|
118
123
|
Available `--llm` options: `cohere`, `google_palm`, `hugging_face`, `llama_cpp`, `ollama`, `openai`, and `replicate`. The selected LLM will be used to generate embeddings and completions.
|
119
124
|
|
120
125
|
The `--model` option is used to specify which ActiveRecord model vectorsearch capabilities will be added to.
|
@@ -4,7 +4,7 @@ module LangchainrbRails
|
|
4
4
|
module Generators
|
5
5
|
#
|
6
6
|
# Usage:
|
7
|
-
# rails
|
7
|
+
# rails generate langchainrb_rails:pgvector --model=Product --llm=openai
|
8
8
|
#
|
9
9
|
class PgvectorGenerator < LangchainrbRails::Generators::BaseGenerator
|
10
10
|
desc "This generator adds Pgvector vectorsearch integration to your ActiveRecord model"
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LangchainrbRails
|
4
|
+
module Generators
|
5
|
+
#
|
6
|
+
# PineconeGenerator does the following:
|
7
|
+
# 1. Creates the `langchainrb_rails.rb` initializer file
|
8
|
+
# 2. Adds necessary code to the ActiveRecord model to enable vectorsearch
|
9
|
+
# 3. Adds `qdrant-ruby` gem to the Gemfile
|
10
|
+
#
|
11
|
+
# Usage:
|
12
|
+
# rails generate langchainrb_rails:qdrant --model=Product --llm=openai
|
13
|
+
#
|
14
|
+
class QdrantGenerator < LangchainrbRails::Generators::BaseGenerator
|
15
|
+
desc "This generator adds Qdrant vectorsearch integration to your ActiveRecord model"
|
16
|
+
source_root File.join(__dir__, "templates")
|
17
|
+
|
18
|
+
# Creates the `langchainrb_rails.rb` initializer file
|
19
|
+
def create_initializer_file
|
20
|
+
template "qdrant_initializer.rb", "config/initializers/langchainrb_rails.rb"
|
21
|
+
end
|
22
|
+
|
23
|
+
# Adds `vectorsearch` class method to the model and `after_save` callback that calls `upsert_to_vectorsearch()`
|
24
|
+
def add_to_model
|
25
|
+
inject_into_class "app/models/#{model_name.downcase}.rb", model_name do
|
26
|
+
" vectorsearch\n\n after_save :upsert_to_vectorsearch\n\n"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Adds `qdrant-ruby` gem to the Gemfile
|
31
|
+
# TODO: Can we automatically run `bundle install`?
|
32
|
+
def add_to_gemfile
|
33
|
+
gem "qdrant-ruby"
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
# @return [String] Name of the model
|
39
|
+
def model_name
|
40
|
+
options["model"]
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [String] LLM provider to use
|
44
|
+
def llm
|
45
|
+
options["llm"]
|
46
|
+
end
|
47
|
+
|
48
|
+
# @return [Langchain::LLM::*] LLM class
|
49
|
+
def llm_class
|
50
|
+
Langchain::LLM.const_get(LLMS[llm])
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
LangchainrbRails.configure do |config|
|
4
|
+
config.vectorsearch = Langchain::Vectorsearch::Qdrant.new(
|
5
|
+
llm: <%= llm_class %>.new(api_key: ENV["<%= llm.upcase %>_API_KEY"]),
|
6
|
+
url: ENV["QDRANT_URL"],
|
7
|
+
api_key: ENV["QDRANT_API_KEY"],
|
8
|
+
index_name: ""
|
9
|
+
)
|
10
|
+
end
|
@@ -12,6 +12,7 @@ module LangchainrbRails
|
|
12
12
|
require_relative "generators/langchainrb_rails/chroma_generator"
|
13
13
|
require_relative "generators/langchainrb_rails/pinecone_generator"
|
14
14
|
require_relative "generators/langchainrb_rails/pgvector_generator"
|
15
|
+
require_relative "generators/langchainrb_rails/qdrant_generator"
|
15
16
|
end
|
16
17
|
end
|
17
18
|
end
|
data/lib/langchainrb_rails.rb
CHANGED
@@ -19,6 +19,7 @@ module LangchainrbRails
|
|
19
19
|
autoload :BaseGenerator, "langchainrb_rails/generators/langchainrb_rails/base_generator"
|
20
20
|
autoload :ChromaGenerator, "langchainrb_rails/generators/langchainrb_rails/chroma_generator"
|
21
21
|
autoload :PgvectorGenerator, "langchainrb_rails/generators/langchainrb_rails/pgvector_generator"
|
22
|
+
autoload :QdrantGenerator, "langchainrb_rails/generators/langchainrb_rails/qdrant_generator"
|
22
23
|
end
|
23
24
|
|
24
25
|
class << self
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: langchainrb_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrei Bondarev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: langchainrb
|
@@ -90,11 +90,13 @@ files:
|
|
90
90
|
- lib/langchainrb_rails/generators/langchainrb_rails/chroma_generator.rb
|
91
91
|
- lib/langchainrb_rails/generators/langchainrb_rails/pgvector_generator.rb
|
92
92
|
- lib/langchainrb_rails/generators/langchainrb_rails/pinecone_generator.rb
|
93
|
+
- lib/langchainrb_rails/generators/langchainrb_rails/qdrant_generator.rb
|
93
94
|
- lib/langchainrb_rails/generators/langchainrb_rails/templates/add_vector_column_template.rb.tt
|
94
95
|
- lib/langchainrb_rails/generators/langchainrb_rails/templates/chroma_initializer.rb.tt
|
95
96
|
- lib/langchainrb_rails/generators/langchainrb_rails/templates/enable_vector_extension_template.rb.tt
|
96
97
|
- lib/langchainrb_rails/generators/langchainrb_rails/templates/pgvector_initializer.rb.tt
|
97
98
|
- lib/langchainrb_rails/generators/langchainrb_rails/templates/pinecone_initializer.rb.tt
|
99
|
+
- lib/langchainrb_rails/generators/langchainrb_rails/templates/qdrant_initializer.rb.tt
|
98
100
|
- lib/langchainrb_rails/railtie.rb
|
99
101
|
- lib/langchainrb_rails/version.rb
|
100
102
|
- sig/langchainrb_rails.rbs
|