skywork embedding模型需通过api调用,不可离线使用;中文文档应按语义段落切分、过滤低信息密度块并添加元数据;向量库须设cosine距离且归一化,相似度阈值建议0.85左右。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想用Skywork AI的Embedding模型把文档转成向量、存进向量库、再做语义检索,但卡在模型调用方式、中文分块策略或相似度阈值设置上。
确认Skywork Embedding模型是否可用
访问 https://skywork.ai/embedding → 查看页面右上角“Status”标签是否显示绿色“Online” → 若为灰色“Maintenance”或红色“Offline”,说明当前服务不可用,需改用本地部署方案。
注意:Skywork官方未开源Embedding模型权重,【所有调用必须走其API接口,无法离线加载模型文件】。
调用Skywork API生成文本向量
方法一:使用curl命令快速验证
打开终端,执行以下命令(替换YOUR_API_KEY为实际密钥):
curl -X POST "https://api.skywork.ai/v1/embeddings" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input": "今天天气不错", "model": "skywork-embedding-v2"}'
方法二:Python脚本批量处理
安装依赖:pip install requests
写入脚本embed_skywork.py:
import requests
def get_skywork_embedding(text):
url = "https://api.skywork.ai/v1/embeddings"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {"input": text, "model": "skywork-embedding-v2"}
res = requests.post(url, headers=headers, json=data)
return res.json()["data"][0]["embedding"]
vec = get_skywork_embedding("向量检索比关键词搜索更懂用户意图")
print(len(vec)) # 应输出1024
这一步操作起来很简单,直接把文件拖进去就行。但要注意:单次请求input字段最大支持8192字符,超长文本必须先切块再分别调用。
中文文档切块与向量化最佳实践
第一步:按语义段落切分,而非固定字数
对PDF或Word文档,优先用PaddleOCR-VL或PP-StructureV3解析出标题、正文、列表、表格等结构单元;再以“标题+其下所有正文段”为一块,避免跨章节割裂上下文。
第二步:过滤低信息密度块
丢弃纯页眉页脚、重复版权声明、空白行超过3行的段落;保留含动词、名词短语、数字指标的句子,例如“Q3营收同比增长23.6%”必须单独成块,“详见附录”直接删除。
第三步:对每块添加元数据标签
在向量入库时,同步写入source_file、page_number、section_title三个字段;后续检索可加filter条件,比如只查《2025产品白皮书》第12页的技术参数部分。
构建向量库并执行语义检索
使用ChromaDB(轻量)或Milvus(高并发)存储向量:
pip install chromadb
import chromadb
client = chromadb.PersistentClient(path="./skywork_db")
collection = client.create_collection(name="tech_docs", metadata={"hnsw:space": "cosine"})
插入向量时,必须设置normalize_embeddings=True参数,否则余弦相似度计算结果失真。
执行检索:
query_vec = get_skywork_embedding("如何配置RAG流水线")
results = collection.query(
query_embeddings=[query_vec],
n_results=5,
where={"source_file": {"$eq": "rag_guide.pdf"}}
)
for i, doc in enumerate(results["documents"][0]):
print(f"Top{i+1}: {doc[:100]}...")
注意:Skywork-embedding-v2默认输出已归一化的1024维向量,【务必在创建collection时指定hnsw:space为cosine,不能用l2】。
调试检索效果的三个关键阈值
方法一:查看原始相似度分数
collection.query()返回的results中包含distances字段,值域为[0,2];0表示完全相同,>1.2基本无语义关联。
方法二:动态调整n_results数量
先设n_results=10,人工检查前5条是否相关;若第4条开始出现无关内容,说明阈值应卡在0.85左右。
方法三:用测试集跑召回率
准备20个标准问句+对应正确文档ID的黄金标准集;批量检索后统计“返回结果包含正确ID”的比例;低于75%需重新切块或换模型。










