---
title: "#Architecture — Blog"
description: "Posts tagged \"Architecture\"."
image: "https://zengliangyi.com/og/blog/tag/architecture.png"
---

Tag

# #Architecture

2 posts tagged "Architecture".

[All posts](/en/blog)

- [#Architecture](/en/blog/tag/architecture)

- [#ChatCrystal](/en/blog/tag/chatcrystal)

- [#Node.js](/en/blog/tag/node-js)

- [#TypeScript](/en/blog/tag/typescript)

- [#SQLite](/en/blog/tag/sqlite)

- [#AI](/en/blog/tag/ai)

- [#Data parsing](/en/blog/tag/data-parsing)

- [#Knowledge management](/en/blog/tag/knowledge-management)

- [#MCP](/en/blog/tag/mcp)

- [#Claude Code](/en/blog/tag/claude-code)

[##  Choosing a Local Vector Store: Vectra, Chroma, and hnswlib

Compare Vectra, Chroma, and hnswlib through ChatCrystal’s deployment constraints: integration, retrieval cost, backups, and recovery boundaries.          曾亮懿       June 9, 2026      6 min read

#ChatCrystal

#TypeScript

#Vector search

#Architecture](/en/blog/local-vector-database-selection)    [##  Local-First and Cloud AI: Understanding Data Boundaries

Trace storage, embeddings, summaries, and agent recall in ChatCrystal to identify which data boundaries local-first architecture actually controls.          曾亮懿       June 4, 2026      5 min read

#ChatCrystal

#Architecture

#Privacy

#AI](/en/blog/local-first-ai-data-boundaries)

##  From writing to code

Explore ChatCrystal, developer tools and daily learning notes on my GitHub. Questions about the implementation are welcome.

[Visit my GitHub](https://github.com/ZengLiangYi)

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "ZengLiangYi Blog",
  "alternateName": [
    "Zeng Liangyi",
    "ZengLiangYi",
    "zengliangyi.com"
  ],
  "url": "https://zengliangyi.com",
  "description": "曾亮懿的个人网站。记录 AI Native 探索、开发者工具与全栈产品实践。"
}
```
