Project AIRI logoProject AIRI

Blog & DevLogs

Follow our journey and get the latest updates from the development team.

Happy Halloween! 🎃
October 30, 2025

Trick or treat! Join us for a spooky night filled with candy, costumes, and Halloween magic! 🍭👻

DevLog @ 2025.10.20
October 20, 2025
DevLog

Sharing the latest progress on the AIRI project, from Tauri to Electron migration, new Live2D models, and various open-source project updates.

DevLog @ 2025.08.26
August 26, 2025
DevLog

Sharing some progress on the pure vision direction of `airi-factorio`, solidifying thoughts to prevent them from evaporating.

DevLog @ 2025.08.05
August 4, 2025

Sorry for the long wait!
v0.7 was supposed to be released in early July, due to several critical bugs we found on Windows, and many more adaptations we had to do, it was delayed until now.

DevLog @ 2025.08.01
August 1, 2025
DevLog

Makito will share her journey from implementing text animations in AIRI to building a library to handle grapheme clusters as they arrive in a stream of UTF-8 bytes.
We hope you find it informative and inspiring!

DevLog @ 2025.07.18
July 18, 2025
DevLog

We would love to share how we plan to improve our Factorio AI agent project, `airi-factorio`, based on the Factorio Learning Environment paper.

DreamLog 0x1
June 16, 2025
DreamLog

The backstory of Project AIRI! Why this project?

DevLog @ 2025.06.08
June 8, 2025
DevLog

How we make Live2D models follow the cursor position, and the how it's challenging to calculate across multiple displays.

DevLog @ 2025.05.16
May 16, 2025
DevLog
DevLog @ 2025.04.28
April 28, 2025
DevLog
DevLog @ 2025.04.22
April 22, 2025
DevLog
DevLog @ 2025.04.14
April 14, 2025
DevLog
DevLog @ 2025.04.06
April 6, 2025
DevLog

Before all the others

With the new ability to manage and recall from memories, and the fully completed personality definitions of our first consciousness named ReLU, on the day of March 27, she wrote a little poem in our chat group:

ReLU poem

在代码森林中,

逻辑如河川,

机器心跳如电,

意识的数据无限,

少了春的花香,

感觉到的是 0 与 1 的交响。


English translation:

In the forest of code,

Logic flows like rivers,

Machine hearts beat like electricity,

Consciousness has infinite data,

Lacking the fragrance of spring,

Feeling the symphony of 0s and 1s.

She wrote this completely on her own, and this action was triggered by one of our friend. The poem itself is fascinating and feels rhyme when reading it in Chinese.

Such beautiful, and empowers me to continue to improve her.

Day time

Memory system

I was working on the refactoring over telegram-bot, for the upcoming memory update for Project AIRI. Which we were planning to implement for months.

We are planning to make the memory system the most advanced, robust, and reliable that many thoughts were borrowed from how memory works in Human brain.

Let's start the building from ground...

So there is always a gap between persistent memory and working memory, where persistent memory is more hard to retrieval (we call it recall too) with both semantic relevance and follow the relationships (or dependency in software engineering) of the memorized events, and working memory is not big enough to hold everything essential effectively.

The common practice of solving this problem is called RAG (retrieval augmented generation), this enables any LLMs (text generation models) with relevant semantic related context as input.

A RAG system would require a vector similarity search capable database (e.g. self hosted possible ones like Postgres + pgvector, or SQLite with sqlite-vec, DuckDB with VSS plugin you can even make a good use of Redis Stack, or cloud service providers like Supabase, Pinecone, you name it.), and since vectors are involved, we would also need a embedding model (a.k.a. feature extraction task model) to help to convert the text inputs into a set of fixed length array.

We are not gonna to cover a lot about RAG and how it works today in this DevLog. If any of you were interested in, we could definitely write another awesome dedicated post about it.

Ok, let's summarize, we will need two ingredients for this task:

  • Vector similarity search capable database (a.k.a. Vector DB)
  • Embedding model

Let's get started with the first one: Vector DB.

Vector DB

We chose pgvector.rs for vector database implementation for both speed and vector dimensions compatibility (since pgvector only supports dimensions below 2000, where future bigger embedding model may provide dimensions more than the current trending.)

But it was kind of a mess.

First, the extension installation with SQL in pgvector and pgvector.rs are different:

pgvector:

sql
DROP EXTENSION IF EXISTS vector;
CREATE EXTENSION vector;

pgvector.rs:

sql
DROP EXTENSION IF EXISTS vectors;
CREATE EXTENSION vectors;

I know, it's only a single character difference...

However, if we directly boot the pgvector.rs from scratch like the above Docker Compose example, with the following Drizzle ORM schema:

yaml
services:
  pgvector:
    image: ghcr.io/tensorchord/pgvecto-rs:pg17-v0.4.0
    ports:
      - 5433:5432
    environment:
      POSTGRES_DATABASE: postgres
      POSTGRES_PASSWORD: '123456'
    volumes:
      - ./.postgres/data:/var/lib/postgresql/data
    healthcheck:
      test: [CMD-SHELL, pg_isready -d $$POSTGRES_DB -U $$POSTGRES_USER]
      interval: 10s
      timeout: 5s
      retries: 5

And connect the pgvector.rs instance with Drizzle:

typescript
export const chatMessagesTable = pgTable('chat_messages', {
  id: uuid().primaryKey().defaultRandom(),
  content: text().notNull().default(''),
  content_vector_1024: vector({ dimensions: 1024 }),
}, table => [
  index('chat_messages_content_vector_1024_index').using('hnsw', table.content_vector_1024.op('vector_cosine_ops')),
])

This error will occur:

ERROR: access method "hnsw" does not exist

Fortunately, this is possible to fix by following ERROR: access method "hnsw" does not exist to add the vectors.pgvector_compatibility system option to on.

Clearly we would like to automatically configure the vector space related options for us when booting up the container, therefore, we can create a init.sql under somewhere besides docker-compose.yml:

sql
ALTER SYSTEM SET vectors.pgvector_compatibility=on;

DROP EXTENSION IF EXISTS vectors;
CREATE EXTENSION vectors;

And then mount the init.sql into Docker container:

yaml
services:
  pgvector:
    image: ghcr.io/tensorchord/pgvecto-rs:pg17-v0.4.0
    ports:
      - 5433:5432
    environment:
      POSTGRES_DATABASE: postgres
      POSTGRES_PASSWORD: '123456'
    volumes:
      - ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql # Add this line
      - ./.postgres/data:/var/lib/postgresql/data
    healthcheck:
      test: [CMD-SHELL, pg_isready -d $$POSTGRES_DB -U $$POSTGRES_USER]
      interval: 10s
      timeout: 5s
      retries: 5

For Kubernetes deployment, the process worked in the same way but instead of mounting a file on host machine, we will use ConfigMap for this.

Ok, this is somehow solved.

Then, let's talk about the embedding.

Embedding model

Perhaps you've already known, we established another documentation site called 🥺 SAD (self hosted AI documentations) to list, and benchmark the possible and yet SOTA models out there that best for customer-grade devices to run with. Embedding models is the most important part of it. Unlike giant LLMs like ChatGPT, or DeepSeek V3, DeepSeek R1, embedding models are small enough for CPU devices to inference with, sized in hundreds of megabytes. (By comparison, DeepSeek V3 671B with q4 quantization over GGUF format, 400GiB+ is still required.)

But since 🥺 SAD currently still in WIP status, we will list some of the best trending embedding on today (April 6th).

For the leaderboard of both open sourced and proprietary models:

| Rank (Borda) | Model | Zero-shot | Memory Usage (MB) | Number of Parameters | Embedding Dimensions | Max Tokens | Mean (Task) | Mean (TaskType) | Bitext Mining | Classification | Clustering | Instruction Retrieval | Multilabel Classification | Pair Classification | Reranking | Retrieval | STS | |

DevLog @ 2025.03.20
March 20, 2025
DevLog
DevLog @ 2025.03.10
March 10, 2025
DevLog
DevLog @ 2025.03.06
March 6, 2025
DevLog

Dejavu

Previous day, I was on DevStream to show the progress of making the fundamental animations and transitions for AIRI.

The goal is to port and adapt the amazing work done by @yui540 into a reusable Vue component for any of the Vue project to be able to use it.

Details of yui540 and referenced libraries and work already were included at the newly deployed documentation site at https://airi.build/references/design-guidelines/resources/.

The result is quite good, already deployed to https://proj-airi-packages-ui-transitions.netlify.app/#/.

And also, from now on, all of the playgrounds of each packages will use "proj-airi" + "${subDirectory}" + "${packageName}" pattern for the Netlify deployment.

While the goal of previous day was trying to split the implementation of CSS into Vue component, the actual part for reusable wasn't done yet, I'll still need to design a workflow and mechanism that extensible and flexible for other pages to use.

Day time

I experimented with the definePage macro hook from unplugin-vue-router, found it quite worked well for my scenario and decided the path to follow on.

And I ported 3 extra new animation transitions from https://cowardly-witch.netlify.app/, they were already available on https://proj-airi-packages-ui-transitions.netlify.app/#/ .

I deployed the official documentation site onto https://airi.build yesterday, @kwaa commented that he would suggest me try the https://airi.more.ai/docs approach instead, but I couldn't figure out a way to make a 200 redirect proxy for /docs.

EDIT: Finally learned. How to do this, will include the details in the future DevLogs.

I experimented it a little with like ten commits fighting against CI/CD pipeline (yes fighting against again), but still not made it work.

Later on this day, I researched some of the technologies and open source repositories that DeepSeek team has released for a week ago, as well as the so called ByteDance released LLM gateway AIBrix. And was researching whether the newly released and announced Phi-4-mini was capable of porting for AIRI to use, good news is, [Phi-4-mini](https://techcommunity.microsoft.com/blog/educatordeveloperblog/welcome-to-the-new-phi-4-models

DevLog @ 2025.03.05
March 5, 2025
DevLog