curl --request POST \
--url http://127.0.0.1:4319/memory/query \
--header 'Content-Type: application/json' \
--data '
{
"query": "what are my plans for today"
}
'import requests
url = "http://127.0.0.1:4319/memory/query"
payload = { "query": "what are my plans for today" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({query: 'what are my plans for today'})
};
fetch('http://127.0.0.1:4319/memory/query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://127.0.0.1:4319/memory/query"
payload := strings.NewReader("{\n \"query\": \"what are my plans for today\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "4319",
CURLOPT_URL => "http://127.0.0.1:4319/memory/query",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => 'what are my plans for today'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:4319/memory/query")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"what are my plans for today\"\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("http://127.0.0.1:4319/memory/query")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"what are my plans for today\"\n}")
.asString();using RestSharp;
var options = new RestClientOptions("http://127.0.0.1:4319/memory/query");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"query\": \"what are my plans for today\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"memories": [
{
"id": "<string>",
"ownerId": "<string>",
"memoryType": "fact",
"canonical": "<string>",
"content": "<string>",
"summary": "<string>",
"assertedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"similarity": 0.85,
"rrfScore": 0.0328,
"source": {
"documentId": "<string>",
"title": "Deploy Guide",
"path": "<string>",
"headingPath": "Deploy Guide > Database",
"page": 123
}
}
]
}{
"error": "invalid request body",
"issues": [
{
"path": "query",
"message": "query must be a non-empty string"
}
]
}{
"error": "the store is locked by a connected Postgres wire client (Drizzle Studio, psql, a DB panel). PGLite is single-connection; disconnect that client and retry."
}Recall memories
Hybrid retrieval over active memories: vector similarity + exact keyword + entity match,
fused with reciprocal-rank fusion. Results are ordered by rrfScore, which is rank-based
and small by design (about 0.03 max). similarity is the plain cosine similarity score.
curl --request POST \
--url http://127.0.0.1:4319/memory/query \
--header 'Content-Type: application/json' \
--data '
{
"query": "what are my plans for today"
}
'import requests
url = "http://127.0.0.1:4319/memory/query"
payload = { "query": "what are my plans for today" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({query: 'what are my plans for today'})
};
fetch('http://127.0.0.1:4319/memory/query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://127.0.0.1:4319/memory/query"
payload := strings.NewReader("{\n \"query\": \"what are my plans for today\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "4319",
CURLOPT_URL => "http://127.0.0.1:4319/memory/query",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => 'what are my plans for today'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:4319/memory/query")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"what are my plans for today\"\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("http://127.0.0.1:4319/memory/query")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"what are my plans for today\"\n}")
.asString();using RestSharp;
var options = new RestClientOptions("http://127.0.0.1:4319/memory/query");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"query\": \"what are my plans for today\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"memories": [
{
"id": "<string>",
"ownerId": "<string>",
"memoryType": "fact",
"canonical": "<string>",
"content": "<string>",
"summary": "<string>",
"assertedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"similarity": 0.85,
"rrfScore": 0.0328,
"source": {
"documentId": "<string>",
"title": "Deploy Guide",
"path": "<string>",
"headingPath": "Deploy Guide > Database",
"page": 123
}
}
]
}{
"error": "invalid request body",
"issues": [
{
"path": "query",
"message": "query must be a non-empty string"
}
]
}{
"error": "the store is locked by a connected Postgres wire client (Drizzle Studio, psql, a DB panel). PGLite is single-connection; disconnect that client and retry."
}Body
Response
Ranked memories.
Hide child attributes
Hide child attributes
active, stale The kind of memory: one of fact, preference, episode, procedure. Recall results for ingested context chunks carry the sentinel context (see kind).
"fact"
Cosine similarity to the query (meaning signal alone). Present on recall results.
0.85
Fused reciprocal-rank-fusion score. Rank-based and small by design. Use it for ordering; it is not a percentage.
0.0328
Whether this result is a saved memory or a chunk of an ingested context document.
memory, context Present on context-chunk results; describes where the text came from.