本质就是文本匹配:粗排+精排;
在自然语言处理 (NLP) 领域,检索类聊天机器人是一种常见的应用,它们通常用于快速、准确地从已知的信息集中检索答案。这种类型的聊天机器人通过匹配用户的查询与预先准备好的答案集合来工作,而不是生成全新的响应。
有两种方式得到检索结果:
- 问题与问题之间,比较多。qq问题;
- 问题与答案之间进行检索;
1 把所有问题放入模型BERT中,得到问题候选集合;
2 对用户问题进行编码,得到问题向量;
3 匹配;可能通过fassi得到的结果不是很好,可以把前十拿出来,然后再精排序;
fassi模型加载的太多数据会导致机器崩调。我猜测是在做与其他向量匹配时候内存溢出导致。
1 faiss
FAISS (Facebook AI Similarity Search) 是一个开源的库,由 Facebook AI Research (FAIR) 开发并维护。它主要用于高效地搜索大规模的向量集合,并且特别适用于高维数据的情况。FAISS 提供了多种索引结构和相似度度量方法,可以极大地提高相似性搜索的速度。
主要特点
- 高性能:FAISS 能够在大规模的向量集合上执行快速的近似最近邻搜索。
- 灵活:支持多种距离度量方法,例如 L2 距离、内积等。
- 可扩展:能够处理数十亿级别的向量集合。
- 易于集成:提供 C++ 和 Python 接口,方便集成到现有的项目中。
使用场景
- 推荐系统:根据用户的行为或偏好找到最相关的项目。
- 计算机视觉:基于图像特征进行图像检索。
- 自然语言处理:基于语义嵌入进行文档检索或问答系统的答案检索。
- 机器学习:在大规模数据集上的聚类分析或异常检测。
技术细节
FAISS 支持多种索引结构和技术来加速搜索过程,包括但不限于:
- Flat Index:直接计算所有向量之间的距离,适用于较小的数据集。
- Inverted File:通过将向量划分到不同的“列表”中来减少搜索范围。
- Product Quantization (PQ):将向量分解成多个子向量,并对每个子向量进行量化,以