Eino

Eino 的适配:Eino 内置了 Embedding 模型(也可对接第三方 Embedding API,如 OpenAI Embedding),无需你手动处理文本转向量的过程;它会在 Elasticsearch 中自动创建向量字段(比如content_vector),存储帖子 / 评论的向量值,检索时直接基于向量字段计算相似度。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Elasticsearch索引映射(mapping)示例
{
"mappings": {
"properties": {
"content": { // 关键词检索字段
"type": "text",
"analyzer": "ik_max_word", // 中文IK分词器,适配关键词检索
"fields": {
"keyword": { "type": "keyword" } // 用于精确匹配
}
},
"content_vector": { // 向量检索字段
"type": "dense_vector", // Elasticsearch的向量类型
"dims": 1536, // 向量维度(和Embedding模型一致,如OpenAI Embedding是1536维)
"index": true,
"similarity": "cosine" // 相似度计算方式:余弦相似度
},
"post_id": { "type": "keyword" },
"create_time": { "type": "date" }
}
}
}

没有提前生成向量

Eino 库针对 “未提前生成向量” 的场景,做了隐式处理—— 它并没有要求你提前把文本转成向量存到 ES,而是在检索阶段动态处理,核心逻辑是:
你只需要往 ES 存原始文本 → 用户提问时,Eino 先把「用户问题」转成向量 → 再用这个向量去匹配 ES 中「纯文本字段」的语义相似度(ES 会基于文本动态计算向量) → 最终返回语义相关的文本内容。

索引 + 事务 + 分布式锁

1. 索引优化:针对性提升核心查询效率

应用场景:用户列表分页查询、帖子按发布时间 / 热度查询、根据用户 ID 查帖子等高频场景,索引是解决 MySQL 慢查询的核心手段。具体实现:
用 GORM 的gorm:”index”标签给核心字段加索引,或手动创建复合索引;
针对不同查询场景设计索引(单字段索引 / 复合索引),避免冗余索引

2. 事务控制:保障核心操作的原子性

应用场景:用户发布帖子(扣减积分 + 创建帖子记录)、帖子删除(删除帖子 + 删除关联评论)等 “多步操作必须同时成功 / 失败” 的场景。

3. 分布式锁:解决高并发下的数据竞争

应用场景:用户并发点赞帖子、并发修改个人资料、秒杀类场景(若项目有)等,防止多个请求同时修改同一条数据导致的逻辑错误。具体实现:基于 Redis 实现分布式锁(和项目中已用的 Redis 复用),结合 GORM 的数据库操作,确保同一时间只有一个请求修改目标数据。

简历已更新

HYM - Golang后端开发实习生
📱 ****1800
📧 1960583030@qq.com
🐱 GitHub: pooi-woop

男 / 2005.12
微信: dag667
博客: https://pooiwoop-github-io.pages.dev/

教育背景

:::left
重庆邮电大学 - 计算机科学与技术学院
:::
:::right
2024.09 - 今
:::
已通过英语六级。作为信息化办蓝山工作室成员参与工作室相关项目,如集成大语言模型的课程平台,负责 AI 模块的研发,基于 Eino 框架实现核心推理引擎,并设计 RAG 架构以支撑智能问答与知识检索能力。

项目

恶雨论坛:类似小黑盒贴吧小红书的社交平台Demo

Eino MySQL Redis Elasticsearch Vue3 element plus Kafka gorm Snowflake Github Action Viper SMTP Zap

一个由我独立完成的论坛项目

后端仓库-pooi-woop/EyuForum-Backend | 前端仓库-pooi-woop/EyuForum-Frontend

  • 针对高并发场景,基于 Kafka+Redis 搭建消息队列转接架构,显著提升消息处理吞吐量与系统并发承载能力;

  • 基于 GORM 库构建 MySQL 数据层:通过索引优化、事务控制、分布式锁保障用户 / 帖子核心数据的操作效率与一致性;Redis 存储验证码、Refresh Token 等高频数据并配置持久化策略,兼顾访问性能与数据可靠性。

  • 引入 Snowflake 算法生成分布式唯一 ID,规避 ID 碰撞风险,提升核心业务数据标识的安全性与唯一性;

  • 构建全文检索与 AI 问答能力:将帖子、评论内容同步至 Elasticsearch 支撑搜索功能,并基于 Eino 库落地 RAG 技术流程,赋能 AI 问答场景的上下文语义理解;

  • 通过Github Action实现CI/CD

  • 基于 Viper 库实现配置文件集中管理,支持配置热更新、环境隔离,保障配置管理的便捷性、安全性与可维护性;

  • 集成第三方 API 能力:对接 QQ 邮箱 SMTP 接口实现注册、密码重置、账号注销等邮件通知功能;调用高德开放 API 实现天气预报核心功能,丰富产品服务维度;

  • 基于 Zap 库搭建结构化日志体系,实现日志分级、多端输出,大幅降低问题定位与错误处理成本;

  • 强化系统安全机制:密码采用加盐哈希算法存储,杜绝明文泄露风险;前后端 ID 传输采用 String 类型,规避 JSON 序列化导致的数值精度丢失问题;

  • feed 流实现:采用拉模式核心逻辑,先查询用户关注的用户 ID 列表,再通过 MySQL 复合索引高效筛选这些用户的帖子并按发布时间倒序分页,同时基于 Redis 缓存 Feed 流结果降低数据库查询压力。

  • 利用vue3框架和element plus组件库实现了前端页面

    其他项目请看我的github主页

技能

  • Golang基础:熟悉golang基础知识,熟悉goroutine,channel,熟悉GMP原理。
  • 数据库:熟练使用Mysql、Redis及常见的优化手段,有elasticsearch相关开发经验.
  • RPC:在工作室工作期间使用过grpc与kitex,相关项目例:pooi-woop/LanshanClass
  • AI相关: 熟悉Eino库,RAG,MCP,skill开发
  • 工具:熟悉Git,npm,githubAction等项目管理及构建工具。
  • 音视频处理:熟悉livego,obs等推拉流相关工具,熟练使用sox,gpt-sovits,sovits-svc,whisper等开源音声处理项目。