Echo Embeddings 开源项目教程
echo-embeddings项目地址:https://gitcode.com/gh_mirrors/ec/echo-embeddings
项目介绍
Echo Embeddings 是一个旨在解决自回归模型架构限制的嵌入策略。自回归模型的一个主要问题是,令牌嵌入无法包含输入中后续令牌的信息。Echo Embeddings 通过在输入中重复输入两次来解决这个问题,从而使早期令牌能够捕获后续令牌的信息。该项目在 MTEB(Massive Text Embedding Benchmark)上表现出色,并且与多种改进嵌入模型的方法兼容。
项目快速启动
环境准备
确保你已经安装了 Hugging Face 的 transformers
库:
pip install transformers
克隆项目
git clone https://github.com/jakespringer/echo-embeddings.git
cd echo-embeddings
运行示例
# example.py
from echo_embeddings import EchoEmbeddingsMistral, EchoPooling, EchoParser
# 指定模板
templates = {
'query': '<s>Instruct:[ %%prompt%% ]\nQuery:[ %%text%%]\nQuery again:[%%text%%][</s>]',
'document': '<s>Document:[ %%text%%]\nDocument again:[%%text%%][</s>]'
}
# 使用预训练模型生成嵌入
echo_embeddings = EchoEmbeddingsMistral(templates)
embeddings = echo_embeddings.generate_embeddings("你的文本")
print(embeddings)
运行 example.py
文件:
python example.py
应用案例和最佳实践
文本相似度计算
Echo Embeddings 可以用于计算两个文本之间的相似度。以下是一个简单的示例:
# similarity.py
from echo_embeddings import EchoEmbeddingsMistral
from sklearn.metrics.pairwise import cosine_similarity
# 初始化嵌入模型
echo_embeddings = EchoEmbeddingsMistral(templates)
# 生成两个文本的嵌入
text1_embedding = echo_embeddings.generate_embeddings("文本1")
text2_embedding = echo_embeddings.generate_embeddings("文本2")
# 计算相似度
similarity = cosine_similarity([text1_embedding], [text2_embedding])
print(f"文本相似度: {similarity[0][0]}")
文档检索
Echo Embeddings 还可以用于文档检索任务,通过计算查询与文档库中每个文档的相似度来找到最相关的文档。
# retrieval.py
from echo_embeddings import EchoEmbeddingsMistral
from sklearn.metrics.pairwise import cosine_similarity
# 初始化嵌入模型
echo_embeddings = EchoEmbeddingsMistral(templates)
# 文档库
documents = ["文档1", "文档2", "文档3"]
# 生成文档库中每个文档的嵌入
document_embeddings = [echo_embeddings.generate_embeddings(doc) for doc in documents]
# 生成查询的嵌入
query_embedding = echo_embeddings.generate_embeddings("查询文本")
# 计算相似度
similarities = cosine_similarity([query_embedding], document_embeddings)
# 找到最相关的文档
most_relevant_doc_index = similarities.argmax()
print(f"最相关的文档: {documents[most_relevant_doc_index]}")
典型生态项目
MTEB(Massive Text Embedding Benchmark)
MTEB 是一个大规模文本嵌入基准测试,用于评估不同文本嵌入方法的性能。Echo Embeddings 在 MTEB 上表现优异,证明了其有效性。
Hugging Face Transformers
Hugging Face 的 transformers
库是一个广泛使用的自然语言处理库,提供了多种预训练模型和工具。Echo Embeddings 与该库兼容,可以方便地集成到现有的 NLP 项目中。
Sklearn
sklearn
是一个强大的机器学习库,提供了多种机器学习算法和工具。在上述示例中,我们使用了 sklearn
的 cosine_similarity
函数来计算文本嵌入之间的相似度。
通过结合这些生态项目,可以进一步扩展和优化 Echo Embeddings 的应用场景。
echo-embeddings项目地址:https://gitcode.com/gh_mirrors/ec/echo-embeddings