Files
wiki_crawler/README.md
2026-01-13 11:29:14 +08:00

46 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# wiki_crawler
本仓库主要用于存放wiki_crawler的代码
核心依赖 `firecrawl` 和 阿里百炼 的api支持
完成wiki网页爬取和向量化与知识库查找
## 当前状况
1. chunk分段逻辑根据返回的markdown进行分割按照#、##进行标题的分类增加JSONB格式字段meta_info有下面两个字段分别可以用于数据库查询和LLM上下文认知资料来源
```python
# 源数据 (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服务调用搜索逻辑问题分类流程架构设计场景假设
整理dify报错
包装mcp server