Skip to content

Commit 164c792

Browse files
committed
Improved examples [skip ci]
1 parent b7fcf5f commit 164c792

3 files changed

Lines changed: 13 additions & 12 deletions

File tree

examples/cohere/example.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
conn.exec("CREATE TABLE documents (id bigserial PRIMARY KEY, content text, embedding bit(1024))")
1010

1111
# https://docs.cohere.com/reference/embed
12-
def fetch_embeddings(texts, input_type)
12+
def embed(texts, input_type)
1313
url = "https://api.cohere.com/v1/embed"
1414
headers = {
1515
"Authorization" => "Bearer #{ENV.fetch("CO_API_KEY")}",
@@ -31,13 +31,13 @@ def fetch_embeddings(texts, input_type)
3131
"The cat is purring",
3232
"The bear is growling"
3333
]
34-
embeddings = fetch_embeddings(input, "search_document")
34+
embeddings = embed(input, "search_document")
3535
input.zip(embeddings) do |content, embedding|
3636
conn.exec_params("INSERT INTO documents (content, embedding) VALUES ($1, $2)", [content, embedding])
3737
end
3838

3939
query = "forest"
40-
query_embedding = fetch_embeddings([query], "search_query")[0]
40+
query_embedding = embed([query], "search_query")[0]
4141
result = conn.exec_params("SELECT content FROM documents ORDER BY embedding <~> $1 LIMIT 5", [query_embedding])
4242
result.each do |row|
4343
puts row["content"]

examples/openai/example.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
# https://platform.openai.com/docs/guides/embeddings/how-to-get-embeddings
1313
# input can be an array with 2048 elements
14-
def fetch_embeddings(input)
14+
def embed(input)
1515
url = "https://api.openai.com/v1/embeddings"
1616
headers = {
1717
"Authorization" => "Bearer #{ENV.fetch("OPENAI_API_KEY")}",
@@ -31,14 +31,14 @@ def fetch_embeddings(input)
3131
"The cat is purring",
3232
"The bear is growling"
3333
]
34-
embeddings = fetch_embeddings(input)
35-
34+
embeddings = embed(input)
3635
input.zip(embeddings) do |content, embedding|
3736
conn.exec_params("INSERT INTO documents (content, embedding) VALUES ($1, $2)", [content, embedding])
3837
end
3938

40-
document_id = 1
41-
result = conn.exec_params("SELECT content FROM documents WHERE id != $1 ORDER BY embedding <=> (SELECT embedding FROM documents WHERE id = $1) LIMIT 5", [document_id])
39+
query = "forest"
40+
query_embedding = embed([query])[0]
41+
result = conn.exec_params("SELECT content FROM documents ORDER BY embedding <=> $1 LIMIT 5", [query_embedding])
4242
result.each do |row|
4343
puts row["content"]
4444
end

examples/openai/example_sequel.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class Document < Sequel::Model
2020

2121
# https://platform.openai.com/docs/guides/embeddings/how-to-get-embeddings
2222
# input can be an array with 2048 elements
23-
def fetch_embeddings(input)
23+
def embed(input)
2424
url = "https://api.openai.com/v1/embeddings"
2525
headers = {
2626
"Authorization" => "Bearer #{ENV.fetch("OPENAI_API_KEY")}",
@@ -40,13 +40,14 @@ def fetch_embeddings(input)
4040
"The cat is purring",
4141
"The bear is growling"
4242
]
43-
embeddings = fetch_embeddings(input)
43+
embeddings = embed(input)
4444

4545
documents = []
4646
input.zip(embeddings) do |content, embedding|
4747
documents << {content: content, embedding: Pgvector.encode(embedding)}
4848
end
4949
Document.multi_insert(documents)
5050

51-
document = Document.first
52-
pp document.nearest_neighbors(:embedding, distance: "cosine").limit(5).map(&:content)
51+
query = "forest"
52+
query_embedding = embed([query])[0]
53+
pp Document.nearest_neighbors(:embedding, query_embedding, distance: "cosine").limit(5).map(&:content)

0 commit comments

Comments
 (0)