nbc demo updates

This commit is contained in:
Alex Garcia 2024-10-11 09:08:29 -07:00
parent f43ae7a741
commit 5c99ad3905
6 changed files with 19 additions and 1112 deletions

View file

@ -21,11 +21,7 @@
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -55,11 +51,7 @@
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -117,11 +109,7 @@
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -205,11 +193,7 @@
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -261,11 +245,7 @@
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -319,11 +299,7 @@
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -484,11 +460,7 @@
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -530,11 +502,7 @@
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -579,11 +547,7 @@
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -635,11 +599,7 @@
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -683,11 +643,7 @@
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -843,7 +799,7 @@
"language_info": {
"file_extension": ".sql",
"mimetype": "text/x.sqlite",
"name": "sqlite",
"name": "sql",
"nb_converter": "script",
"pygments_lexer": "sql",
"version": "TODO"

View file

@ -17,11 +17,7 @@
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -95,11 +91,7 @@
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -196,11 +188,7 @@
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -397,11 +385,7 @@
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -833,11 +817,7 @@
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -1396,11 +1376,7 @@
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"metadata": {},
"outputs": [
{
"data": {
@ -1664,7 +1640,7 @@
"language_info": {
"file_extension": ".sql",
"mimetype": "text/x.sqlite",
"name": "sqlite",
"name": "sql",
"nb_converter": "script",
"pygments_lexer": "sql",
"version": "TODO"

View file

@ -1,26 +0,0 @@
.open tmp.db
--.load ./vec0
.load ./lembed0
.timer on
insert into lembed_models(name, model)
values (
'default',
lembed_model_from_file('all-MiniLM-L6-v2.e4ce9877.q8_0.gguf')
);
with subset as (
select headline from articles limit 1000
)
select sum(lembed(headline)) from subset;
.load ./rembed0
insert into rembed_clients(name, options)
values ('default','llamafile');
with subset as (
select headline from articles limit 1000
)
select sum(rembed('default', headline)) from subset;

View file

@ -1,45 +0,0 @@
.mode box
.header on
.bail on
begin;
create virtual table fts_headlines using fts5(
headline,
content='articles', content_rowid='id'
);
insert into fts_headlines(rowid, headline)
select rowid, headline
from articles;
INSERT INTO fts_headlines(fts_headlines) VALUES('optimize');
.timer on
.load ../../dist/vec0
.load ./lembed0
insert into lembed_models(name, model) values
('default', lembed_model_from_file('all-MiniLM-L6-v2.e4ce9877.q8_0.gguf'));
create virtual table vec_headlines using vec0(
article_id integer primary key,
headline_embedding float[384]
);
-- 1m23s
insert into vec_headlines(article_id, headline_embedding)
select
rowid,
lembed(headline)
from articles;
commit;
-- rembed vec0 INSERT: 10m17s
-- before: 4.37 MB
-- /w fts content: 5.35 MB (+0.98 MB)
-- with optimize 5.30 MB (-0.049 MB)
-- w/ fts: 6.67 MB (+2.30 MB)
-- sum(octet_length(headline)): 1.16 MB

View file

@ -1,897 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[no code]"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
".open tmp.db\n",
".load ../../dist/vec0\n",
".load ./rembed0\n",
"\n",
"insert into rembed_clients(name, options)\n",
" values ('snowflake-arctic-embed-m-v1.5', 'llamafile');\n",
"\n",
"--select vec_version(), rembed_debug();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## FTS Search"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table>\n",
"<thead>\n",
"<tr style=\"text-align: center;\">\n",
"<th>\n",
"rowid\n",
"</th>\n",
"<th>\n",
"headline_highlighted\n",
"</th>\n",
"<th>\n",
"rank\n",
"</th>\n",
"</tr>\n",
"</thead>\n",
"<tbody>\n",
"<tr>\n",
"<td >\n",
"4666\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Kamala Harris visits &lt;b&gt;Planned&lt;/b&gt; &lt;b&gt;Parenthood&lt;/b&gt; clinic\n",
"</td>\n",
"<td >\n",
"-18.9139950477264\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"6521\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Former Marine sentenced to 9 years in prison for firebombing &lt;b&gt;Planned&lt;/b&gt; &lt;b&gt;Parenthood&lt;/b&gt; clinic\n",
"</td>\n",
"<td >\n",
"-14.807022703838651\n",
"</td>\n",
"</tr>\n",
"</tbody>\n",
"</table>\n",
"<div style=\"text-align: right;\">\n",
"2 rows × 3 columns\n",
"</div>\n",
"</div>\n"
],
"text/plain": [
"\u001b[0m┌\u001b[0m\u001b[0m───────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m──────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m─────────────────────\u001b[0m\u001b[0m┐\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mrowid\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mheadline_highlighted \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mrank \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m├\u001b[0m\u001b[0m───────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m──────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m─────────────────────\u001b[0m\u001b[0m┤\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 4666\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mKamala Harris visits <b>Planned</b> <b>Parenthood</b> clinic \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m -18.9139950477264\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 6521\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mFormer Marine sentenced to 9 years in prison for firebombing <b>Planned</b> <b>Parenthood</b> clinic\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m-14.807022703838651\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m└\u001b[0m\u001b[0m───────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m──────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m─────────────────────\u001b[0m\u001b[0m┘\n",
"\u001b[0m\u001b[0m"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
".param set query planned parenthood\n",
"\n",
"select\n",
" rowid,\n",
" highlight(fts_headlines, 0, '<b>', '</b>') as headline_highlighted,\n",
" rank\n",
"from fts_headlines\n",
"where headline match :query\n",
"order by rank\n",
"limit 10;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Vector Search"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"outputs": [
{
"ename": "SQL logic error",
"evalue": "Error sending HTTP request: http://localhost:8080/embedding: Connection Failed: Connect error: Connection refused (os error 61)",
"output_type": "error",
"traceback": []
}
],
"source": [
".param set query planned parenthood\n",
"\n",
"select\n",
" article_id,\n",
" articles.headline,\n",
" distance\n",
"from vec_headlines\n",
"left join articles on articles.rowid = vec_headlines.article_id\n",
"where headline_embedding match vec_normalize(vec_slice(rembed('snowflake-arctic-embed-m-v1.5', :query), 0, 256))\n",
" and k = 10;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## FTS + Vector search: RFF"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"outputs": [
{
"ename": "SQL logic error",
"evalue": "SQL logic error (1) : Error sending HTTP request: http://localhost:8080/embedding: Connection Failed: Connect error: Connection refused (os error 61)",
"output_type": "error",
"traceback": []
}
],
"source": [
".param set query planned parenthood\n",
"\n",
"insert or replace into temp.sqlite_parameters\n",
" values ('query_embedding', rembed('snowflake-arctic-embed-m-v1.5', :query));\n",
"\n",
".param set weight_fts 1.0\n",
".param set weight_vec 1.0\n",
".param set rrf_k 60\n",
".param set k 10\n",
"\n",
"\n",
"with vec_matches as (\n",
" select\n",
" article_id,\n",
" row_number() over (order by distance) as rank_number,\n",
" distance\n",
" from vec_headlines\n",
" where\n",
" headline_embedding match vec_slice(:query_embedding, 0, 256)\n",
" and k = :k\n",
" order by distance\n",
"),\n",
"fts_matches as (\n",
" select\n",
" rowid,\n",
" row_number() over (order by rank) as rank_number,\n",
" rank as score\n",
" from fts_headlines\n",
" where headline match :query\n",
" limit :k\n",
"),\n",
"final as (\n",
" select\n",
" articles.id,\n",
" articles.headline,\n",
" vec_matches.distance as vector_distance,\n",
" fts_matches.score as fts_score,\n",
" coalesce(1.0 / (:rrf_k + fts_matches.rowid), 0.0) * :weight_fts +\n",
" coalesce(1.0 / (:rrf_k + vec_matches.article_id), 0.0) * :weight_vec\n",
" as combined_score\n",
"\n",
" from fts_matches\n",
" full outer join vec_matches on vec_matches.article_id = fts_matches.rowid\n",
" join articles on articles.rowid = coalesce(fts_matches.rowid, vec_matches.article_id)\n",
" order by combined_score desc\n",
")\n",
"select * from final;\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table>\n",
"<thead>\n",
"<tr style=\"text-align: center;\">\n",
"<th>\n",
"json(&#39;[1,2,3,4]&#39;)\n",
"</th>\n",
"<th>\n",
"vec_f32(X&#39;AABBCCDD&#39;)\n",
"</th>\n",
"</tr>\n",
"</thead>\n",
"<tbody>\n",
"<tr>\n",
"<td style=\"color: red\">\n",
"[1,2,3,4]\n",
"</td>\n",
"<td style=\"color: blue\">\n",
"Blob&lt;4&gt;\n",
"</td>\n",
"</tr>\n",
"</tbody>\n",
"</table>\n",
"<div style=\"text-align: right;\">\n",
"1 row × 2 columns\n",
"</div>\n",
"</div>\n"
],
"text/plain": [
"\u001b[0m┌\u001b[0m\u001b[0m───────────────────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m──────────────────────\u001b[0m\u001b[0m┐\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mjson('[1,2,3,4]')\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mvec_f32(X'AABBCCDD')\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m├\u001b[0m\u001b[0m───────────────────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m──────────────────────\u001b[0m\u001b[0m┤\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m[1,2,3,4] \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m Blob<4> \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m└\u001b[0m\u001b[0m───────────────────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m──────────────────────\u001b[0m\u001b[0m┘\n",
"\u001b[0m\u001b[0m"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"select json('[1,2,3,4]'), vec_f32(X'AABBCCDD')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"vscode": {
"languageId": "sql"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table>\n",
"<thead>\n",
"<tr style=\"text-align: center;\">\n",
"<th>\n",
"addr\n",
"</th>\n",
"<th>\n",
"opcode\n",
"</th>\n",
"<th>\n",
"p1\n",
"</th>\n",
"<th>\n",
"p2\n",
"</th>\n",
"<th>\n",
"p3\n",
"</th>\n",
"<th>\n",
"p4\n",
"</th>\n",
"<th>\n",
"p5\n",
"</th>\n",
"<th>\n",
"comment\n",
"</th>\n",
"<th>\n",
"subprog\n",
"</th>\n",
"<th>\n",
"nexec\n",
"</th>\n",
"<th>\n",
"ncycle\n",
"</th>\n",
"</tr>\n",
"</thead>\n",
"<tbody>\n",
"<tr>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Init\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"12\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"1\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Null\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"1\n",
"</td>\n",
"<td >\n",
"1\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"2\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"VOpen\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"vtab:7FAC27505B30\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"3\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Integer\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"2\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"4\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Integer\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"3\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"5\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"VFilter\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"8\n",
"</td>\n",
"<td >\n",
"2\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"6\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"AggStep\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"1\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"count(0)\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"7\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"VNext\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"6\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"8\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"AggFinal\n",
"</td>\n",
"<td >\n",
"1\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"count(0)\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"9\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Copy\n",
"</td>\n",
"<td >\n",
"1\n",
"</td>\n",
"<td >\n",
"4\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"10\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"ResultRow\n",
"</td>\n",
"<td >\n",
"4\n",
"</td>\n",
"<td >\n",
"1\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"11\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Halt\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"12\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Transaction\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"11\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"0\n",
"</td>\n",
"<td >\n",
"1\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"<tr>\n",
"<td >\n",
"13\n",
"</td>\n",
"<td style=\"text-align: left;\">\n",
"Goto\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"1\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"<td >\n",
"0\n",
"</td>\n",
"</tr>\n",
"</tbody>\n",
"</table>\n",
"<div style=\"text-align: right;\">\n",
"14 rows × 11 columns\n",
"</div>\n",
"</div>\n"
],
"text/plain": [
"\u001b[0m┌\u001b[0m\u001b[0m──────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m─────────────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m───────────────────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m─────────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m─────────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m───────\u001b[0m\u001b[0m┬\u001b[0m\u001b[0m────────\u001b[0m\u001b[0m┐\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0maddr\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mopcode \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mp1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mp2\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mp3\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mp4 \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mp5\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mcomment\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0msubprog\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mnexec\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mncycle\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m├\u001b[0m\u001b[0m──────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m─────────────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m───────────────────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m─────────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m─────────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m───────\u001b[0m\u001b[0m┼\u001b[0m\u001b[0m────────\u001b[0m\u001b[0m┤\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mInit \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m12\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mNull \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 2\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mVOpen \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mvtab:7FAC27505B30\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 3\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mInteger \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 2\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 4\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mInteger \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 3\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 5\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mVFilter \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 8\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 2\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 6\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mAggStep \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mcount(0) \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 7\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mVNext \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 6\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 8\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mAggFinal \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mcount(0) \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 9\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mCopy \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 4\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 10\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mResultRow \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 4\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 11\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mHalt \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 12\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mTransaction\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m11\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m0 \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 13\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0mGoto \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 1\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m\u001b[3m NULL \u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[0m 0\u001b[0m \u001b[0m\u001b[0m│\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0m\u001b[0m└\u001b[0m\u001b[0m──────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m─────────────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m───────────────────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m─────────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m─────────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m───────\u001b[0m\u001b[0m┴\u001b[0m\u001b[0m────────\u001b[0m\u001b[0m┘\n",
"\u001b[0m\u001b[0m"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"select * from bytecode('select count(*) from pragma_table_list;')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Solite",
"language": "sql",
"name": "solite"
},
"language_info": {
"file_extension": ".sql",
"mimetype": "text/x.sqlite",
"name": "sqlite",
"nb_converter": "script",
"pygments_lexer": "sql",
"version": "TODO"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View file

@ -1,57 +0,0 @@
.load ../../dist/vec0
.load ./rembed0
insert into rembed_clients(name, options)
values ('snowflake-arctic-embed-m-v1.5', 'llamafile');
.bail on
.mode box
.header on
.timer on
.param set :query 'death row'
.param set :weight_fts 1.0
.param set :weight_vec 1.0
.param set :rrf_k 60
.param set :query_embedding "vec_normalize(vec_slice(rembed('snowflake-arctic-embed-m-v1.5', :query), 0, 256))"
.param set :k 10
select 'Hybrid w/ RRF' as "";
with vec_matches as (
select
article_id,
row_number() over (order by distance) as rank_number,
distance
from vec_headlines
where
headline_embedding match :query_embedding
and k = :k
order by distance
),
fts_matches as (
select
rowid,
--highlight(fts_headlines, 0, '<b>', '</b>') as headline_highlighted,
row_number() over (order by rank) as rank_number,
rank as score
from fts_headlines
where headline match :query
limit :k
),
final as (
select
articles.id,
articles.headline,
vec_matches.distance as vector_distance,
fts_matches.score as fts_score,
coalesce(1.0 / (:rrf_k + fts_matches.rowid), 0.0) * :weight_fts +
coalesce(1.0 / (:rrf_k + vec_matches.article_id), 0.0) * :weight_vec
as combined_score
from fts_matches
full outer join vec_matches on vec_matches.article_id = fts_matches.rowid
join articles on articles.rowid = coalesce(fts_matches.rowid, vec_matches.article_id)
order by combined_score desc
)
select * from final;