ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Zvec Embedding Function 全家桶:内置 Embedding Function 完整指南

Zvec Embedding Function 全家桶:内置 Embedding Function 完整指南 Zvec Embedding Function 全家桶内置 Embedding Function 完整指南【免费下载链接】zvecA lightweight, lightning-fast, in-process vector database项目地址: https://gitcode.com/GitHub_Trending/zve/zvec如果你正在用Zvec一个轻量、极速、进程内的向量数据库做语义检索一定会遇到第一个问题文字怎么变成向量好消息是Zvec 的 Python SDK 自带了一个开箱即用的Embedding Function嵌入函数全家桶——本地模型、云端 API、本地推理服务全覆盖装好 SDK 就能直接用无需自己搭模型管道。本文带你 10 分钟摸清 Zvec 内置的全部 8 个 Embedding Function每个是干什么的、需要什么依赖、适合什么场景并给出新手最易上手的配置建议。先搞懂Zvec 的 Embedding Function 分两类Zvec 用两个协议类定义所有嵌入函数接口极其简单——只要实现一个embed()方法即可类型返回值擅长场景稠密向量Dense定长浮点数组如 384 维语义相似度搜索、以文搜图稀疏向量Sparse字典{维度索引: 权重}只存非零项关键词精确匹配、BM25 式检索 两者组合就是业界推崇的混合检索Hybrid Search稠密管意思像不像稀疏管词对不对。协议定义位于 embedding_function.py这也是你自己写自定义嵌入函数的起点。一张表看懂 Zvec 内置的 8 个 Embedding Function所有实现都集中在python/zvec/extension/目录下统一从zvec.extension导入类名向量类型运行位置底层模型/服务默认维度所需依赖DefaultLocalDenseEmbedding稠密本地all-MiniLM-L6-v2384sentence-transformersDefaultLocalSparseEmbedding稀疏本地SPLADE约 3 万维仅存非零项sentence-transformersBM25EmbeddingFunction稀疏本地BM25DashText词表规模dashtextOpenAIDenseEmbedding稠密云端text-embedding-3-small1536可指定openaiQwenDenseEmbedding稠密云端text-embedding-v4构造时指定dashscopeQwenSparseEmbedding稀疏云端text-embedding-v4词表规模dashscopeJinaDenseEmbedding稠密云端jina-embeddings-v5-text-nano768/1024openaiHTTPDenseEmbedding稠密本地 HTTPLM Studio / Ollama / vLLM自动探测无纯标准库最快上手3 个本地 Embedding Function无需 API Key1. DefaultLocalDenseEmbedding零门槛语义向量from zvec.extension import DefaultLocalDenseEmbedding emb DefaultLocalDenseEmbedding() vector emb.embed(什么是向量数据库) print(len(vector)) # 384首次运行会自动下载约 50~80MB 的模型之后完全离线可用国内用户推荐指定 ModelScope 源会自动切换为中文优化的 GTE 模型DefaultLocalDenseEmbedding(model_sourcemodelscope)支持 CPU/GPU 自动选择CPU 上约 1000 句/秒GPU 可达 10000 句/秒。实现见 sentence_transformer_embedding_function.py。2. DefaultLocalSparseEmbedding本地 SPLADE 稀疏向量from zvec.extension import DefaultLocalSparseEmbedding query_emb DefaultLocalSparseEmbedding(encoding_typequery) query_vec query_emb.embed(机器学习 算法) # {12: 0.8, 45: 1.2, ...}基于 SPLADE 模型输出可解释的词权重字典内置类级模型缓存query 和 document 两个实例共享同一份模型内存避免重复加载。3. BM25EmbeddingFunction经典 BM25 也能变向量from zvec.extension import BM25EmbeddingFunction bm25 BM25EmbeddingFunction(languagezh, encoding_typequery) vec bm25.embed(什么是机器学习) # {1169440797: 0.29, 2045788977: 0.70, ...}内置中文zh与英文en两种预训练编码器开箱即用也支持传入自己的语料库训练专属编码器BM25EmbeddingFunction(corpusdocs, b0.75, k11.2)。云端 EmbeddingOpenAI、Qwen、Jina 三家通吃OpenAIDenseEmbeddingfrom zvec.extension import OpenAIDenseEmbedding emb OpenAIDenseEmbedding(modeltext-embedding-3-small) # 读取 OPENAI_API_KEY vector emb.embed(vector database in-process)支持自定义维度如 256、512、1024和base_url指向任何 OpenAI 兼容服务。QwenDenseEmbedding / QwenSparseEmbeddingfrom zvec.extension import QwenDenseEmbedding emb QwenDenseEmbedding(dimension1024, text_typedocument) # 读取 DASHSCOPE_API_KEY默认模型text-embedding-v4稠密、稀疏两个函数共用一个 API稀疏版输出按维度索引升序排列的字典天然适合做混合检索。JinaDenseEmbedding支持任务优化from zvec.extension import JinaDenseEmbedding query_emb JinaDenseEmbedding(taskretrieval.query) doc_emb JinaDenseEmbedding(taskretrieval.passage)v5 模型支持task参数区分查询与文档的编码策略还支持 Matryoshka 可变维度。 三个云端函数都支持环境变量自动读取 KeyOPENAI_API_KEY/DASHSCOPE_API_KEY/JINA_API_KEY且embed()自带 LRU 缓存重复文本不会重复扣费。本地模型也能白嫖HTTPDenseEmbedding 对接 LM Studio / Ollama如果你用 LM Studio 或 Ollama 在本地跑着嵌入模型Zvec 直接连上即可连第三方库都不需要装纯标准库实现 HTTP 调用from zvec.extension import HTTPDenseEmbedding emb HTTPDenseEmbedding(base_urlhttp://localhost:11434, modelnomic-embed-text) vector emb.embed(hello zvec)维度会自动从首次响应中探测无需手动配置。实现见 http_embedding_function.py。新手选型6 个场景直接对号入座你的场景推荐组合理由快速原型、不想花钱DefaultLocalDenseEmbedding384 维、免 API Key、速度快中文为主的文档库DefaultLocalDenseEmbedding(model_sourcemodelscope)或QwenDenseEmbedding中文语义效果更好混合检索语义关键词DefaultLocalSparseEmbedding/BM25EmbeddingFunction 本地稠密全本地、可解释、零成本企业级语义质量优先OpenAIDenseEmbedding或JinaDenseEmbedding旗舰模型支持任务优化数据不能出内网HTTPDenseEmbedding Ollama/LM Studio私有化部署维度自动探测精确关键词匹配为主BM25EmbeddingFunction传统 IR 场景的标杆使用 Embedding Function 的 5 条最佳实践查询和文档分开编码Qwen 用text_type、Jina 用task、本地稀疏用encoding_type区分query/document能显著提升非对称检索的召回率。维度提前规划创建集合时直接用emb.dimension声明向量维度保证 Schema 与模型严格一致所有实现都暴露该属性。利用内置缓存云端embed()默认 LRU 缓存HTTP 版为 256 条批量导入时相同文本不会重复请求。API Key 走环境变量不要把 Key 硬编码进代码Zvec 会自动回退读取环境变量。想接自家模型继承DenseEmbeddingFunction/SparseEmbeddingFunction协议只写一个embed()方法即可无缝替换无需改动 Zvec 任何代码。核心模块路径速查内容路径稠密/稀疏协议定义python/zvec/extension/embedding_function.py本地 Sentence Transformer 实现python/zvec/extension/sentence_transformer_embedding_function.pyBM25 稀疏实现python/zvec/extension/bm25_embedding_function.pyOpenAI 实现python/zvec/extension/openai_embedding_function.pyQwen 稠密/稀疏实现python/zvec/extension/qwen_embedding_function.pyJina 实现python/zvec/extension/jina_embedding_function.py本地 HTTP 实现python/zvec/extension/http_embedding_function.py全部公开导出python/zvec/extension/__init__.py单元测试参考python/tests/test_embedding.py总结Zvec 的 Embedding Function 全家桶把文本变向量这件事做到了真正的开箱即用8 个内置实现覆盖本地、云端、本地推理服务三类部署形态稠密与稀疏双通道让混合检索触手可及。新手建议从DefaultLocalDenseEmbedding起步跑通全链路再按数据规模和精度需求平滑升级到云端或私有化方案——而这一切只需要换一个类的名字。【免费下载链接】zvecA lightweight, lightning-fast, in-process vector database项目地址: https://gitcode.com/GitHub_Trending/zve/zvec创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表