README.md 4.48 KB
Newer Older
Rayyyyy's avatar
Rayyyyy committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# FlagEmbedding
智源开源库FlagEmbedding

## 已适配模型
- **Embedding Model**: [BGE Embedding](./FlagEmbedding/baai_general_embedding)
- **Reranker Model**: [BGE Reranker](./FlagEmbedding/reranker/)

## 环境配置
-v 路径、docker_name和imageID根据实际情况修改
**注意**:bitsandbytes库功能不全,暂不支持量化相关

### Docker(方法一)
```bash
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-centos7.6-dtk24.04-py310
docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=80G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash

cd /your_code_path/FlagEmbedding
pip install -e .
pip install faiss-1.7.2_dtk24.04_gitb7348e7df780-py3-none-any.whl
```

### Dockerfile(方法二)
```bash
cd docker
docker build --no-cache -t FlagEmbedding:latest .
docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=80G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash

cd /your_code_path/FlagEmbedding
pip install -e .
pip install faiss-1.7.2_dtk24.04_gitb7348e7df780-py3-none-any.whl
```

### Anaconda(方法三)
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。
```bash
DTK驱动: dtk24.04
python: python3.10
torch: 2.1.0
```
`Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应`

其它非深度学习库安装方式如下:
```bash
cd /your_code_path/FlagEmbedding
pip install -e .
pip install faiss-1.7.2_dtk24.04_gitb7348e7df780-py3-none-any.whl
```

## 已经适配的项目
### [BGE Reranker](./FlagEmbedding/reranker)
- 交叉编码器将对查询和答案实时计算相关性分数,这比向量模型(即双编码器)更准确,但比向量模型更耗时。
因此,它可以用来对嵌入模型返回的前k个文档重新排序。
我们在多语言数据上训练了交叉编码器,数据格式与向量模型相同,因此您可以根据我们的[示例](./examples/reranker)轻松地对其进行微调。
更多细节请参考[这里](./FlagEmbedding/reranker/README.md)

- 我们提供了新版的交叉编码器,支持更多的语言以及更长的长度。使用的数据格式与向量模型类似,但是新增了prompt用于微调以及推理。您可以使用特定的层进行推理或使用完整的层进行推理,您可以根根据我们的[示例](./FlagEmbedding/llm_reranker#fine-tune)轻松地对其进行微调。
更多细节请参考[llm_reranker/README.md](./examples/llm_reranker/README.md)

### [BGE Embedding](./FlagEmbedding/baai_general_embedding)
BGE Embedding是一个通用向量模型。 我们使用[retromae](https://github.com/staoxiao/RetroMAE)对模型进行预训练,再用对比学习在大规模成对数据上训练模型。
**你可以按照我们的[示例](./examples/finetune)在本地数据上微调嵌入模型。**
我们还提供了一个[预训练示例](./examples/pretrain)
请注意,预训练的目标是重构文本,预训练后的模型无法直接用于相似度计算,需要进行微调之后才可以用于相似度计算。
更多关于bge的训练情况请参阅[论文](https://arxiv.org/pdf/2309.07597.pdf)[代码](./baai_general_embedding/README.md).

**注意BGE使用CLS的表征作为整个句子的表示,如果使用了错误的方式(如mean pooling)会导致效果很差。**

### 精度
暂无

## 应用场景
### 算法类别


### 热点应用行业
制造,广媒,家居,教育

## 预训练权重
通过[SCNet AIModels](http://113.200.138.88:18080/aimodels)下载预训练模型:
### BGE Embedding
- [bge-large-zh-v1.5](http://113.200.138.88:18080/aimodels/bge-large-zh-v1.5)
- [bge-base-zh-v1.5](http://113.200.138.88:18080/aimodels/baai/bge-base-zh-v1.5)
- [bge-small-zh-v1.5](http://113.200.138.88:18080/aimodels/baai/bge-small-zh-v1.5)
- [bge-large-en-v1.5](http://113.200.138.88:18080/aimodels/bge-large-en-v1.5)
- [bge-base-en-v1.5](http://113.200.138.88:18080/aimodels/bge-base-en-v1.5)
- [bge-small-en-v1.5](http://113.200.138.88:18080/aimodels/bge-small-en-v1.5)

### BGE Reranker
- [bge-reranker-base](http://113.200.138.88:18080/aimodels/bge-reranker-base)
- [bge-reranker-large](http://113.200.138.88:18080/aimodels/bge-reranker-large)

## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/

## 参考资料
- https://github.com/FlagOpen/FlagEmbedding