Class: LLM::OpenAI::VectorStores

Inherits:
Object
  • Object
show all
Defined in:
lib/llm/providers/openai/vector_stores.rb

Overview

The LLM::OpenAI::VectorStores class provides an interface for [OpenAI’s vector stores API](platform.openai.com/docs/api-reference/vector_stores/create)

Instance Method Summary collapse

Constructor Details

#initialize(provider) ⇒ VectorStores

Returns a new instance of VectorStores.

Parameters:



13
14
15
# File 'lib/llm/providers/openai/vector_stores.rb', line 13

def initialize(provider)
  @provider = provider
end

Instance Method Details

#add_file(vector:, file:, attributes: nil, **params) ⇒ LLM::Response Also known as: create_file

Add a file to a vector store

Parameters:

  • vector (String, #id)

    The ID of the vector store

  • file (String, #id)

    The ID of the file to add

  • attributes (Hash) (defaults to: nil)

    Attributes to associate with the file (optional)

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:

See Also:



125
126
127
128
129
130
131
132
# File 'lib/llm/providers/openai/vector_stores.rb', line 125

def add_file(vector:, file:, attributes: nil, **params)
  vector_id = vector.respond_to?(:id) ? vector.id : vector
  file_id = file.respond_to?(:id) ? file.id : file
  req = Net::HTTP::Post.new("/v1/vector_stores/#{vector_id}/files", headers)
  req.body = JSON.dump(params.merge({file_id:, attributes:}).compact)
  res = execute(request: req)
  LLM::Response.new(res)
end

#all(**params) ⇒ LLM::Response

List all vector stores

Parameters:

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:



21
22
23
24
25
26
# File 'lib/llm/providers/openai/vector_stores.rb', line 21

def all(**params)
  query = URI.encode_www_form(params)
  req = Net::HTTP::Get.new("/v1/vector_stores?#{query}", headers)
  res = execute(request: req)
  LLM::Response.new(res).extend(LLM::OpenAI::Response::Enumerable)
end

#all_files(vector:, **params) ⇒ LLM::Response

List all files in a vector store

Parameters:

  • vector (String, #id)

    The ID of the vector store

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:

See Also:



108
109
110
111
112
113
114
# File 'lib/llm/providers/openai/vector_stores.rb', line 108

def all_files(vector:, **params)
  vector_id = vector.respond_to?(:id) ? vector.id : vector
  query = URI.encode_www_form(params)
  req = Net::HTTP::Get.new("/v1/vector_stores/#{vector_id}/files?#{query}", headers)
  res = execute(request: req)
  LLM::Response.new(res).extend(LLM::OpenAI::Response::Enumerable)
end

#create(name:, file_ids: [], **params) ⇒ LLM::Response

Create a vector store

Parameters:

  • name (String)

    The name of the vector store

  • file_ids (Array<String>) (defaults to: [])

    The IDs of the files to include in the vector store

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:

See Also:



36
37
38
39
40
41
# File 'lib/llm/providers/openai/vector_stores.rb', line 36

def create(name:, file_ids: [], **params)
  req = Net::HTTP::Post.new("/v1/vector_stores", headers)
  req.body = JSON.dump(params.merge({name:, file_ids:}).compact)
  res = execute(request: req)
  LLM::Response.new(res)
end

#delete(vector:) ⇒ LLM::Response

Delete a vector store

Parameters:

  • vector (String, #id)

    The ID of the vector store

Returns:

See Also:



78
79
80
81
82
83
# File 'lib/llm/providers/openai/vector_stores.rb', line 78

def delete(vector:)
  vector_id = vector.respond_to?(:id) ? vector.id : vector
  req = Net::HTTP::Delete.new("/v1/vector_stores/#{vector_id}", headers)
  res = execute(request: req)
  LLM::Response.new(res)
end

#delete_file(vector:, file:) ⇒ LLM::Response

Delete a file from a vector store

Parameters:

  • vector (String, #id)

    The ID of the vector store

  • file (String, #id)

    The ID of the file to delete

Returns:

See Also:



176
177
178
179
180
181
182
# File 'lib/llm/providers/openai/vector_stores.rb', line 176

def delete_file(vector:, file:)
  vector_id = vector.respond_to?(:id) ? vector.id : vector
  file_id = file.respond_to?(:id) ? file.id : file
  req = Net::HTTP::Delete.new("/v1/vector_stores/#{vector_id}/files/#{file_id}", headers)
  res = execute(request: req)
  LLM::Response.new(res)
end

#get(vector:) ⇒ LLM::Response

Get a vector store

Parameters:

  • vector (String, #id)

    The ID of the vector store

Returns:

See Also:



49
50
51
52
53
54
# File 'lib/llm/providers/openai/vector_stores.rb', line 49

def get(vector:)
  vector_id = vector.respond_to?(:id) ? vector.id : vector
  req = Net::HTTP::Get.new("/v1/vector_stores/#{vector_id}", headers)
  res = execute(request: req)
  LLM::Response.new(res)
end

#get_file(vector:, file:, **params) ⇒ LLM::Response

Get a file from a vector store

Parameters:

  • vector (String, #id)

    The ID of the vector store

  • file (String, #id)

    The ID of the file to retrieve

Returns:

See Also:



160
161
162
163
164
165
166
167
# File 'lib/llm/providers/openai/vector_stores.rb', line 160

def get_file(vector:, file:, **params)
  vector_id = vector.respond_to?(:id) ? vector.id : vector
  file_id = file.respond_to?(:id) ? file.id : file
  query = URI.encode_www_form(params)
  req = Net::HTTP::Get.new("/v1/vector_stores/#{vector_id}/files/#{file_id}?#{query}", headers)
  res = execute(request: req)
  LLM::Response.new(res)
end

#modify(vector:, name: nil, **params) ⇒ LLM::Response

Modify an existing vector store

Parameters:

  • vector (String, #id)

    The ID of the vector store

  • name (String) (defaults to: nil)

    The new name of the vector store

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:

See Also:



64
65
66
67
68
69
70
# File 'lib/llm/providers/openai/vector_stores.rb', line 64

def modify(vector:, name: nil, **params)
  vector_id = vector.respond_to?(:id) ? vector.id : vector
  req = Net::HTTP::Post.new("/v1/vector_stores/#{vector_id}", headers)
  req.body = JSON.dump(params.merge({name:}).compact)
  res = execute(request: req)
  LLM::Response.new(res)
end

#search(vector:, query:, **params) ⇒ LLM::Response

Search a vector store

Parameters:

  • vector (String, #id)

    The ID of the vector store

  • query (String)

    The query to search for

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:

See Also:



93
94
95
96
97
98
99
# File 'lib/llm/providers/openai/vector_stores.rb', line 93

def search(vector:, query:, **params)
  vector_id = vector.respond_to?(:id) ? vector.id : vector
  req = Net::HTTP::Post.new("/v1/vector_stores/#{vector_id}/search", headers)
  req.body = JSON.dump(params.merge({query:}).compact)
  res = execute(request: req)
  LLM::Response.new(res).extend(LLM::OpenAI::Response::Enumerable)
end

#update_file(vector:, file:, attributes:, **params) ⇒ LLM::Response

Update a file in a vector store

Parameters:

  • vector (String, #id)

    The ID of the vector store

  • file (String, #id)

    The ID of the file to update

  • attributes (Hash)

    Attributes to associate with the file

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:

See Also:



144
145
146
147
148
149
150
151
# File 'lib/llm/providers/openai/vector_stores.rb', line 144

def update_file(vector:, file:, attributes:, **params)
  vector_id = vector.respond_to?(:id) ? vector.id : vector
  file_id = file.respond_to?(:id) ? file.id : file
  req = Net::HTTP::Post.new("/v1/vector_stores/#{vector_id}/files/#{file_id}", headers)
  req.body = JSON.dump(params.merge({attributes:}).compact)
  res = execute(request: req)
  LLM::Response.new(res)
end