修改README

This commit is contained in:
2026-01-13 11:29:14 +08:00
parent e5ac2dde03
commit 36bc0cc08b
2 changed files with 33 additions and 9 deletions

View File

@@ -6,13 +6,37 @@
完成wiki网页爬取和向量化与知识库查找 完成wiki网页爬取和向量化与知识库查找
## 当前状况 ## 当前状况
1. 当前在我的电脑本地跑没部署看chenwei有没有空了教我往我们服务器上我自己买的学生服务器还没来得及放上去三月份到期 1. chunk分段逻辑根据返回的markdown进行分割按照#、##进行标题的分类增加JSONB格式字段meta_info有下面两个字段分别可以用于数据库查询和LLM上下文认知资料来源
2. 这个demo后端只实现了功能没有auth相关的部分后续可以直接迁移chenwei那边gtco_ai开一个模块放进去
3. firecrawl的apikey我自己的免费试用apikey快用完了需要准备部署调查付费 ```python
4. 可演示但是还没有包装到可以向客户汇报的层次后续考虑直接用dify做一个工具包装集成到Done的bot里或者用chatflow直接包装里面用节点请求部署好的后端进行知识库查询 # 源数据 (headers)
headers = {"h1": "产品介绍", "h2": "核心功能", "h3": "多语言支持"}
# 生成数据 (header_path)
# Python 代码逻辑: " > ".join(headers.values())
header_path = "产品介绍 > 核心功能 > 多语言支持"
```
2. 量化指标以及测试:目前存入的数据较少,测试结果可能偏差较大
```
"p_at_1": [], # Precision@1: 首位精确率
"hit_at_5": [], # HitRate@5: 前5命中率即返回的前五个目前设置只返回5个是否符合问题
"mrr": [], # Mean Reciprocal Rank: 倒数排名分数,正确答案排得越靠前,分数越高
"latency": [] # 响应耗时
```
3. 搜索逻辑和问题分类目前参考一些主流的做法用户输入后先过一个LLM对问题进行拆分和分类然后传入对应的知识库参数task_id进行对应的检索
4. RAG逻辑混合检索使用向量和关键词混合检索此处进行粗筛数据层返回后在业务层调用 gte-rerank 模型进行重排,最后返回请求
```python
vector_score = (1 - self.db.chunks.c.embedding.cosine_distance(query_vector))# 计算向量相似度
keyword_score = func.ts_rank(self.db.chunks.c.content_tsvector, keyword_query) # 计算关键词相似度
final_score = (vector_score * 0.7 + func.coalesce(keyword_score, 0) * 0.3).label("score")# 计算最终分数
```
5. 产品面向爬虫获取完整wiki可无视robots.txt当前知识库存入和爬虫绑定强依赖markdown格式存入
切割逻辑准确率定义归结资料测试设计mcp服务调用搜索逻辑问题分类流程架构设计场景假设 切割逻辑准确率定义归结资料测试设计mcp服务调用搜索逻辑问题分类流程架构设计场景假设

View File

@@ -102,10 +102,10 @@ class DataService:
results = [] results = []
with self.db.engine.connect() as conn: with self.db.engine.connect() as conn:
keyword_query = func.websearch_to_tsquery('english', query_text) keyword_query = func.websearch_to_tsquery('english', query_text) # 转换为 tsquery
vector_score = (1 - self.db.chunks.c.embedding.cosine_distance(query_vector)) vector_score = (1 - self.db.chunks.c.embedding.cosine_distance(query_vector))# 计算向量相似度
keyword_score = func.ts_rank(self.db.chunks.c.content_tsvector, keyword_query) keyword_score = func.ts_rank(self.db.chunks.c.content_tsvector, keyword_query) # 计算关键词相似度
final_score = (vector_score * 0.7 + func.coalesce(keyword_score, 0) * 0.3).label("score") final_score = (vector_score * 0.7 + func.coalesce(keyword_score, 0) * 0.3).label("score")# 计算最终分数
stmt = select( stmt = select(
self.db.chunks.c.task_id, self.db.chunks.c.task_id,