ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

全球首个开源吠陀AI占星师:VedAstro ChatAPI结合Cohere Embeddings的NLP实现全解

全球首个开源吠陀AI占星师:VedAstro ChatAPI结合Cohere Embeddings的NLP实现全解

【免费下载链接】VedAstro

A non-profit, open source project to make Vedic Astrology easily available to all.

项目地址:https://gitcode.com/gh_mirrors/ve/VedAstro
点击查看免费下载

VedAstro 是一个非营利、开源的吠陀占星(Vedic Astrology)项目,其核心亮点是免费的 AI 占星聊天服务ChatAPI。它把Cohere Embeddings 向量检索、NLP 余弦相似度和多款大语言模型(LLM)串成一条流水线,让你能用自然语言追问自己星盘(Kundli)里的任何一条预测。本文面向新手,用最少代码把这套“AI 占星师”是如何工作的讲清楚 🧿

VedAstro 与 ChatAPI:一个能对话的 AI 占星师

VedAstro 用 C# 实现了完整的吠陀占星计算引擎(行星位置、Dasa 大运、宫位力量等),而 ChatAPI 是它在 ChatAPI.razor 页面暴露出来的对话式入口。它的定位是:

  • 🗣️对话式解读:针对你的出生时间,把几百条预测变成可追问的聊天
  • 🔍语义检索:用 Cohere Embeddings 把问题“翻译”成向量,再找到最相关的预测
  • 🎯多模型分工:Cohere Command R Plus 负责主答,Mistral、Llama 等负责筛选与润色
  • 🌍完全开源:用户反馈会沉淀为公开的学习数据集,持续“喂”给模型

一次提问的完整流水线:从输入到回答

在 ChatAPI.cs 中,一条用户消息会经过这样的流程:

  1. 防呆检查:问题太短(少于 5 个字符)或被识别为“何时发生”类问题,直接给提示,引导你去 Life Predictor 页面
  2. 切片:GetPredictionAsChunks()把整份星盘的预测清单算出每条的Weight(权重)——基于 Shadbala 宫位/行星力量求和,按权重排序后打包成文本块
  3. 语义筛选:PickOutMostRelevantPredictions_*()让轻量 LLM 从整块文本中挑出与问题最相关的几条
  4. 生成回答:AnswerQuestionDirectly_CohereCommandRPlus()以“自信的专业占星师”为系统提示,基于筛选结果作答(Temperature 0.9、TopP 0.1)
  5. 追问:回复附带固定追问按钮Why? / How? / Tell me more...,追问会携带上一轮问答上下文再次进入 LLM

每一轮对话(人类和 AI 的消息)都会写入 Azure 的ChatMessage表,为后续反馈学习留好数据。

Cohere Embeddings 是怎么接入的?

向量生成集中在 LLMEmbeddingManager.cs 和GetEmbeddingsForTextList_CohereEmbed():

  • 调用 Azure 上托管的Cohereembed-english-v3.0无服务器推理端点
  • 每次最多发送95 条文本,超出自动分批并合并结果
  • 请求体里用input_type区分用途:问题用search_query,文档用search_document——这正是语义搜索的最佳实践:两侧用不同视角嵌入,检索更准

检索结果存入 Azure 表PresetQuestionEmbeddings,实体定义见 PresetQuestionEmbeddingsEntity.cs,开源样本数据在 PresetQuestionEmbeddings.csv。

余弦相似度:找到“最相关”的那条预测

向量拿到之后,比的是方向而不是长度。核心公式在 NLPTools.cs 的CosineSimilarity():

相似度 = 两向量点积 ÷(各自模长之积),取值 -1 到 1,越接近 1 语义越一致

GetSimilarity()对每个候选预测计算一次分数、按分数降序排列,取 Top 结果交给 LLM。同文件里还有简易分词器Tokenize()和词袋模型工具,方便你理解从文本到向量的完整链路。

另外,DocToEmbeddings/Program.cs 展示了进阶玩法:把整本《Muhurtha Or Electional Astrology》PDF 抽取成树状文本块(Chunk),为将来“占星书籍语义搜索”打基础。

让 AI 占星师越用越聪明

ChatAPI 页面特别强调两点:

  • 即时学习:每次“好/坏”反馈都会进入模型的决策路径,AI 相当于实时纠正错误
  • 开放回馈:匿名学习模型会上传到 HuggingFace 开源数据集(见 HuggingFace/ 目录),让整个社区受益

想深入了解接口细节,可以翻阅 nlp-api-url-guide.jpg 中的 URL 结构说明图。

关键源码路径速查 📁

模块路径作用
对话主逻辑ChatAPI.cs提问分流、LLM 调用、消息存储
向量生成LLMEmbeddingManager.csCohere / Ada 嵌入 API 封装
NLP 基础工具NLPTools.cs余弦相似度、分词、词袋
嵌入数据表PresetQuestionEmbeddingsEntity.cs预设问题向量实体
前端页面ChatAPI.razor聊天 UI 与服务说明
文档向量化DocToEmbeddings/Program.csPDF 切块入库实验

总结

VedAstro 的 ChatAPI 是“向量检索 + LLM 生成”这一主流 RAG 思路在占星领域的完整落地:Cohere Embeddings 负责理解你问的是什么,NLP 余弦相似度负责选出对的预测,LLM 负责说得像一位占星师。作为全球首个完全开源的吠陀 AI 占星项目,它的每一层逻辑都摊开在仓库里,非常适合想学习 NLP 应用与 LLM 工程实践的开发者阅读和二次开发 ✨

【免费下载链接】VedAstro

A non-profit, open source project to make Vedic Astrology easily available to all.

项目地址:https://gitcode.com/gh_mirrors/ve/VedAstro
点击查看免费下载
上一篇:Qwen3.8-Flash-Next基准性能全解读:6B激活参数如何力压Claude与DeepSeek登顶SWE-bench Pro
下一篇:PyTorch JIT 源码导读:TorchScript 语言与编译器栈的目录架构、IR 表示与执行管线

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进