README.md 5.11 KB
Newer Older
Rayyyyy's avatar
Rayyyyy committed
1
# FlagEmbedding
Rayyyyy's avatar
Rayyyyy committed
2
智源开源库FlagEmbedding,专注于检索增强llm领域。
Rayyyyy's avatar
Rayyyyy committed
3
4
5
6
7
8
9
10
11
12
13

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

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

### Docker(方法一)
```bash
14
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10
Rayyyyy's avatar
Rayyyyy committed
15
16
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

Rayyyyy's avatar
Rayyyyy committed
17
cd /your_code_path/FlagEmbedding_pytorch
Rayyyyy's avatar
Rayyyyy committed
18
pip install -e .
19
pip install peft
Rayyyyy's avatar
Rayyyyy committed
20
pip install faiss-1.7.2_dtk24.04_gitb7348e7df780-py3-none-any.whl
21
22

export LD_LIBRARY_PATH=/path/of/site-packages/faiss/:$LD_LIBRARY_PATH
Rayyyyy's avatar
Rayyyyy committed
23
24
25
26
27
28
29
30
```

### 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

Rayyyyy's avatar
Rayyyyy committed
31
cd /your_code_path/FlagEmbedding_pytorch
Rayyyyy's avatar
Rayyyyy committed
32
pip install -e .
33
pip install peft
Rayyyyy's avatar
Rayyyyy committed
34
pip install faiss-1.7.2_dtk24.04_gitb7348e7df780-py3-none-any.whl
35
36

export LD_LIBRARY_PATH=/path/of/site-packages/faiss/:$LD_LIBRARY_PATH
Rayyyyy's avatar
Rayyyyy committed
37
38
39
40
41
```

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

其它非深度学习库安装方式如下:
```bash
Rayyyyy's avatar
Rayyyyy committed
50
cd /your_code_path/FlagEmbedding_pytorch
Rayyyyy's avatar
Rayyyyy committed
51
pip install -e .
52
pip install peft
Rayyyyy's avatar
Rayyyyy committed
53
pip install faiss-1.7.2_dtk24.04_gitb7348e7df780-py3-none-any.whl
54
55

export LD_LIBRARY_PATH=/path/of/site-packages/faiss/:$LD_LIBRARY_PATH
Rayyyyy's avatar
Rayyyyy committed
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
```

## 已经适配的项目
### [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)会导致效果很差。**

### 精度
暂无

## 应用场景
### 算法类别
Rayyyyy's avatar
Rayyyyy committed
82
检索增强
Rayyyyy's avatar
Rayyyyy committed
83
84

### 热点应用行业
Rayyyyy's avatar
Rayyyyy committed
85
广媒,教育,政府
Rayyyyy's avatar
Rayyyyy committed
86
87
88

## 预训练权重
通过[SCNet AIModels](http://113.200.138.88:18080/aimodels)下载预训练模型:
Rayyyyy's avatar
Rayyyyy committed
89

Rayyyyy's avatar
Rayyyyy committed
90
91
92
93
94
95
96
97
98
99
100
### 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)
Rayyyyy's avatar
Rayyyyy committed
101
102
103
- [bge-reranker-v2-m3](http://113.200.138.88:18080/aimodels/baai/bge-reranker-v2-m3)
- [bge-reranker-v2-gemma](http://113.200.138.88:18080/aimodels/baai/bge-reranker-v2-gemma)
- [bge-reranker-v2-minicpm-layerwise](http://113.200.138.88:18080/aimodels/baai/bge-reranker-v2-minicpm-layerwise)
Rayyyyy's avatar
Rayyyyy committed
104
105

## 源码仓库及问题反馈
Rayyyyy's avatar
Rayyyyy committed
106
- https://developer.hpccube.com/codes/modelzoo/flagembedding_pytorch
Rayyyyy's avatar
Rayyyyy committed
107
108
109

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