SentenceTransformers 库介绍

SentenceTransformers是一个基于PyTorch和Transformers的Python库,能处理100多种语言的文本嵌入,适用于语义文本相似性、搜索和同义词挖掘。用户可以使用预训练模型或进行微调。文中展示了如何计算句子嵌入和执行语义文本相似性任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SentenceTransformers 是一个可以用于句子、文本和图像嵌入的Python库。 可以为 100 多种语言计算文本的嵌入并且可以轻松地将它们用于语义文本相似性、语义搜索和同义词挖掘等常见任务。该框架基于 PyTorch 和 Transformers,并提供了大量针对各种任务的预训练模型。 还可以很容易根据自己的模型进行微调。

### 1. install

pip install -U sentence-transformers

### 2. Computing Sentence Embeddings

from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')

#Our sentences we like to encode
sentences = ['This framework generates embeddings for each input sentence',
    'Sentences are passed as a list of string.', 
    'The quick brown fox jumps over the lazy dog.']

#Sentences are encoded by calling model.encode()
embeddings = model.encode(sentences)

#Print the embeddings
for sentence, embedding in zip(sentences, embeddings):
    print("Sentence:", sentence)
    print("Embedding:", embedding)
    print("")
# 注: 网络连接问题,导致模型下载失败!

### 3. Semantic Textual Similarity
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('all-MiniLM-L6-v2')

# Two lists of sentences
sentences1 = ['The cat sits outside',
             'A man is playing guitar',
             'The new movie is awesome']

sentences2 = ['The dog plays in the garden',
              'A woman watches TV',
              'The new movie is so great']

#Compute embedding for both lists
embeddings1 = model.encode(sentences1, convert_to_tensor=True)
embeddings2 = model.encode(sentences2, convert_to_tensor=True)

#Compute cosine-similarities
cosine_scores = util.cos_sim(embeddings1, embeddings2)

#Output the pairs with their score
for i in range(len(sentences1)):
    print("{} \t\t {} \t\t Score: {:.4f}".format(sentences1[i], sentences2[i], cosine_scores[i][i]))

参考:

https://www.sbert.net/examples/applications/computing-embeddings/README.html

<think>好的,用户想了解如何本地部署DeepSeek的知识。首先,我需要确认DeepSeek是否提供了官方的本地部署方案。可能的情况是,DeepSeek本身是一个大模型,而知识的本地部署可能涉及结合其他工具,比如LangChain或者LlamaIndex。 接下来,我应该回忆一下常见的本地知识部署流程。通常步骤包括:加载文档、文本分割、向量化处理、存储向量数据、构建检索链和部署应用。可能还需要用到Embedding模型,比如OpenAI的或者开源的如BGE、SentenceTransformers。 用户可能关心的是具体如何将DeepSeek与这些工具结合。比如,是否可以用DeepSeek的API来替代其他模型,或者在本地运行DeepSeek的模型。需要分情况讨论:使用API还是本地模型。 如果使用API,流程类似其他云服务,但需要替换接口为DeepSeek的。如果是本地部署模型,可能需要下载模型文件,用Transformers加载,然后整合到知识系统中。 另外,用户可能对硬件有要求,比如是否需要GPU加速。本地部署大模型通常需要较高的配置,这点需要提醒用户。 还要考虑知识的具体实现,比如使用FAISS或Chroma作为向量数据,用LangChain的框架来链式处理。可能需要提供代码示例,但要注意DeepSeek是否兼容这些。 最后,要检查是否有DeepSeek的官方文档或社区资源,提供更准确的指导。如果官方资料有限,建议用户参考通用的本地知识部署方法,并尝试替换模型部分为DeepSeek。</think>DeepSeek 的本地知识部署通常需要结合其大模型能力与外部工具(如 LangChain、LlamaIndex 等),以下是一个通用实现思路,具体可根据需求调整: -- **本地知识部署流程** 1. **环境准备** - 硬件:推荐 GPU 加速(如 NVIDIA 显卡) - 基础环境:Python 3.8+、PyTorch、Transformers - 工具:安装 LangChain、SentenceTransformers、FAISS/Chroma 等 2. **模型准备** - **方案一:使用 DeepSeek API** ```python from langchain_community.llms import DeepSeek llm = DeepSeek(api_key="your_api_key") ``` - **方案二:本地部署模型** ```python from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("deepseek-ai/deepseek-llm-7b-chat") tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-llm-7b-chat") ``` 3. **知识构建** ```python from langchain_community.document_loaders import DirectoryLoader from langchain_text_splitters import RecursiveCharacterTextSplitter # 加载文档 loader = DirectoryLoader('./docs', glob="**/*.pdf") documents = loader.load() # 文本分割 text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) splits = text_splitter.split_documents(documents) ``` 4. **向量化存储** ```python from langchain_community.embeddings import HuggingFaceEmbeddings from langchain_community.vectorstores import FAISS # 使用开源 Embedding 模型 embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-zh-v1.5") # 创建向量 vectorstore = FAISS.from_documents(splits, embeddings) vectorstore.save_local("faiss_index") ``` 5. **检索增强生成(RAG)** ```python from langchain.chains import RetrievalQA # 本地模型接入 from langchain_community.llms import HuggingFacePipeline pipeline = HuggingFacePipeline.from_model_id( model_id="deepseek-ai/deepseek-llm-7b-chat", task="text-generation", device=0 # GPU 加速 ) # 构建问答链 qa_chain = RetrievalQA.from_chain_type( llm=pipeline, retriever=vectorstore.as_retriever(), return_source_documents=True ) # 执行查询 result = qa_chain.invoke({"query": "如何申请年度报告?"}) ``` --- **关键优化点** 1. **分词优化**:根据专业领域调整文本分割策略 2. **混合检索**:结合关键词检索与向量检索提升准确率 3. **缓存机制**:对常见问题建立缓存数据 4. **权限控制**:通过文件级元数据实现访问控制 --- **注意事项** 1. 7B 参数模型建议至少 16GB GPU 显存 2. 中文知识处理建议使用中文优化版 Embedding 模型 3. 敏感数据建议全程本地化处理 4. 可结合 FastAPI 构建 Web 服务接口 如果需要更具体的实现方案,建议参考 DeepSeek 官方文档(https://deepseek.com/docs)或查看其 GitHub 开源仓获取最新部署指南。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值