Quick Ruby client for Marqo (VectorDB)
Marqo is a cool vector DB that lets you store facts and then query them later with natural language. You can install Marqo using Docker, which I managed to do today on my M1 Mac. Just make sure you stop whatever ElasticSearch or OpenSearch instances you may already have running on your machine first, since Marqo wants to use its own.
Once you have it running, you can use the following Ruby class to access it in your Rails project.
require 'httparty'
class Marqo
include HTTParty
base_uri 'http://localhost:8882'
def initialize(auth = { username: 'admin', password: 'admin' })
@auth = auth
end
def store(index_name, name, detail)
options = {
headers: { 'Content-Type' => 'application/json' },
body: [{name: name, detail: detail}].to_json
}
self.class.post("/indexes/#{index_name}/documents", options)
end
def search(index_name, query)
options = {
basic_auth: @auth,
headers: { 'Content-Type' => 'application/json' },
body: { q: query }.to_json
}
self.class.post("/indexes/#{index_name}/search", options)
end
def self.client
@client ||= new
end
end