项目简介
本项目是一个问答召回系统,借助BERT模型对文本进行编码,结合Faiss索引库实现高效的文本搜索。当用户输入问题后,系统能够返回最相似的Topk个问题。
项目的主要特性和功能
- 高效召回:借助BERT模型编码和Faiss索引,可快速找出相似问题。
- 索引管理:支持添加、删除、替换句子以及清除索引等操作。
- 灵活配置:Bert_embedding和faiss_index模块的参数均可灵活配置。
安装使用步骤
环境依赖
确保已安装以下主要依赖,完整依赖见requirement.txt
文件:
- faiss-cpu==1.6.3
- torch==1.1.0
- torchvision==0.2.2
- transformers==3.0.2
使用步骤
- 定义encoder
python from log.log_config import logger_error, logger_basic, loggger_user from bert_model.Bert_embedding import Bert_embedding import torch model = torch.load(bert_path).bert encoder = Bert_embedding(model)
- 读取索引
python faiss_index = Faiss_Index(encoder) faiss_index.Build_index(sens_list) faiss_index.save_index()
- 查找
python faiss_index.search_for_sens(text, n=5)
其他功能操作
- 添加句子:
faiss_index.add(sentence_list)
- 删除句子:
faiss_index.delete(sentence_list)
- 替换句子:
faiss_index.update(old_sentence, new_sentence)
- 清除索引:
faiss_index.clean()
注意事项
- 使用索引搜索前,确保已建立索引。
- 建立索引时,输入的句子集合长度要大于默认值100。
- 使用
build_index
建立新索引时,会重新初始化索引。 - 调用
save_index()
会覆盖原有文件,需提前备份。 - 运行模型时,确保各文件夹存在,并载入日志。
未来改进方向
- 支持多种方式构建索引,如数组和字典等。
- 提供索引合并功能。
- 增加更多编码方法的接口。
- 将PyTorch改为TensorFlow以提升CPU运行速度。
- 提供多进程方法加速离线编码。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】