Zalgorithm

Posts

Chroma hybrid search

Chromadb supports hybrid search, i.e., combining the results of lexical and semantic search.

Chromadb collections

What is a Chromadb collection?

Completions are enabled - Fcitx5 configuration

Fcitx5 is an input method framework…. It is the cussessor to Fcitx.

Full text search with a preprocessed query

Removing query terms that are in the stop-words list, and substituting in words from the substitutions list.

Hugo time format

Hugo uses Go’s reference time.

Querying for tmux keybinding with reciprocal rank fusion

Reciprocal rank fusion (RRF) is a method for combining multiple result sets with different relevance indicators into a single result set. RRF requires no tuning, and the different relevance indicators do not have to be related to each other to achieve high-quality results.

Select search candidates with fts5 then rank by semantic similarity

Find a tmux key binding by searching key binding descriptions with SQLite full-text search, then rank the results with semantic search.

Upsert

Insert a new row if it doesn’t already exist; update the existing row if it does.

Zalgorithm style guide

An evolving style-guide for the Zalgorithm blog.

Obsidian to Hugo Script

Copy a markdown file from Obsidian to Hugo.

Create and populate an SQLite database with Python

Create an SQLite database, and populate it from a JSON file.

Combining full text and semantic search

Possible ways of combining full text and semantic search.

Create a persistent Chroma collection

Embed the descriptions of tmux keybindings into a Chroma collection.

Create and populate a persistent FTS5 table

SQLite virtual tables aren’t necessarily temporary.

Database indexes at a high level

A database index is like a book’s index.

FTS5 indexes

An FTS5 index is a database structure that maps tokens produced from the indexed columns of an FTS5 virtual table to their occurrences in that table.

FTS5 search with English stemming and and matching

A demonstration of the use of the SQLite porter tokenizer in conjunction with the full-text-search AND operator.

Query a Chroma collection

Try getting tmux key bindings with semantic search.

Rank tmux description FTS5 matches with BM25

Search an FTS5 table, ranking the results with BM25.

Searching a Database With Fts5 Queries and English Stemming

Search with FTS5 query syntax.

The Porter Stemming Algorithm

The Porter stemming algorithm is a process for removing the commoner morphological and inflexional endings from words in English. Its main use is a part of a term normalization process that is usually done when setting up Informational Retrieval systems.

Hello Fennel!

First steps with Fennel.

Create Fts5 Virtual Table in the Sqlite Cli

FTS5 is an SQLite virtual table module that provides full-text search functionality to database applications.

Searching a database with SQL LIKE queries

Confirming I know how to query an SQLite database with Python.

SQLite FTS tokenizers

Testing tokenizers in the SQLite CLI.

SQLite virtual tables

(Briefly) what is an SQLite virtual table?

The Obsidian to Hugo Script Now Transfers Tags and Created_at Frontmatter

Small wins.

What Deserves a Note?

It’s goingg to be hit or miss for a while.

Hello World

This is a test, this is only a test…

View Unstaged and Staged Git Modifications

Git diff to the rescue!

Print a Mandelbrot set to the console

A function to generate a Mandelbrot set and print it to the console.

What are vector embeddings

Vector embeddings are numeric representations of text that make it possible to relate semantic similarity between chunks of text to the proximity of the embeddings in vector space.

What is vector space

A stub note for vector space.

Diacritics accents

“Diacritics, often loosely called ‘accents’, are the various little dots and squiggles which, in many languages are written above, below or on top of certain letters of the alphabet to indicate something about their pronunciation.”

Forcing a linebreak to appear in html thats rendered from hugo markdown

To force a linebreak to appear in the HTML that is build by Hugo (Goldmark) from a markdown file, add two spaces and a newline character after the line.

Literary machines book chapter 2

It’s odd that I started reading Ted Nelson’s book Literary Machines after coming up with a loosely held (so loose it’s not yet written down) manifesto for a local-first, userless web. That’s where things are at though. The book is out of print. I’m reading a PDF version that I downloaded from the Internet Archive: https://archive.org/details/literarymachines00nels .

These quotes (and probably some commentary) from chapter two are following from the notes related to chapter 0 and 1 (Hypertext) that are here: literary-machines-book .

Scatter technique

So ideally, for four million readers you would have four million different explanations."

Typing html entities in markdown documents

An HTML entity is a sequence of characters used in HTML to represent reserved characters like < and &.

Literary machines book

“Forty years from now (if the human species survives), there will be hundreds of thousands of file servers—machines storing and dishing out materials. And there will be hundreds of millions of simultaneous users, able to read from billions of stored documents, with trillions of links among them.”

Transclusion rendering multiple HTML fragments in a document

The same content knowably in more than one place.

Differences between GPT and embedding models

Embedding models are LLMs, but what’s the difference between a GPT-stle LLM and an embedding model?

SimCSE - simple constrative learning of sentence embeddings

A framework that uses constrative learning to build sentence embeddings from pre-trained language models.

The meaning of meaning

An attempt to deal directly with the difficulties raised by the influence of Language upon Thought.