Skip to content

508liang/mine_rucweb

Repository files navigation

RUC 搜索引擎项目

一个基于中国人民大学网站的智能搜索引擎,集成了多种先进的信息检索技术。

主要特性

  • BM25 算法: 高效的文本相关性排序
  • PageRank: 基于链接结构的页面重要性评估
  • Learning to Rank (LTR): 机器学习优化的排序模型
  • RAG 问答系统: 基于检索增强生成的智能问答
  • 个性化推荐: 基于用户搜索历史的智能推荐系统

项目结构

├── app.py                      # Flask Web应用主程序
├── ss.py                       # 搜索引擎核心类
├── rag_qa_system.py            # RAG问答系统
├── llm_evaluator.py            # LLM评估器
├── recommendation_system.py     # 推荐系统
├── 爬虫构建相关/
│   ├── optimized_ruc_spider.py # Scrapy爬虫程序
│   └── pranks.py               # PageRank计算
├── templates/                   # HTML模板
└── static/                     # 静态资源

快速开始

环境要求

  • Python 3.8+
  • 依赖包见下方安装说明

安装依赖

pip install flask flask-cors
pip install scrapy
pip install jieba numpy scikit-learn
pip install beautifulsoup4 lxml
pip install openai  # 如使用RAG功能

1. 爬取数据

使用 Scrapy 爬虫爬取人大网站数据:

cd 爬虫构建相关
scrapy crawl ruc_spider

爬虫会将数据保存到 SQLite 数据库和本地文件。

2. 构建索引

运行以下命令构建搜索索引:

from ss import SearchEngine

engine = SearchEngine()
engine.build_index()
engine.save_index('search_index.pkl')

3. 计算 PageRank

cd 爬虫构建相关
python pranks.py

4. 启动 Web 应用

python app.py

访问 http://localhost:5000 即可使用搜索引擎。

核心功能说明

BM25 搜索

采用 BM25 算法进行文本相关性计算,支持中文分词和停用词过滤。

PageRank

基于网页链接关系计算页面重要性,提升搜索结果质量。

Learning to Rank

使用机器学习模型优化排序,综合考虑多个特征:

  • BM25分数
  • PageRank分数
  • URL长度
  • 标题匹配度
  • 内容长度

RAG 问答系统

结合检索和生成技术,可对搜索结果进行智能问答。需配置 OpenAI API 或兼容接口。

个性化推荐

基于用户搜索历史和行为,提供智能推荐功能。

配置说明

RAG 系统配置

如需使用 RAG 功能,需在 rag_qa_system.py 中配置 API:

self.client = OpenAI(
    api_key="your-api-key",
    base_url="your-base-url"
)

技术栈

  • 后端框架: Flask
  • 爬虫框架: Scrapy
  • 中文分词: jieba
  • 机器学习: scikit-learn
  • 数据库: SQLite
  • 前端: HTML/CSS/JavaScript

注意事项

  1. 爬虫使用需遵守网站 robots.txt 规则和相关法律法规
  2. RAG 功能需要配置合适的 LLM API
  3. 首次运行需要爬取数据并构建索引,可能需要较长时间
  4. 建议在良好网络环境下运行爬虫

贡献

欢迎提交 Issue 和 Pull Request!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published