You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ontotext中使用第三方嵌入模型构建相似度索引?

在Ontotext中使用第三方嵌入模型构建相似度索引

可行性说明

Ontotext GraphDB支持通过外部嵌入服务集成第三方模型(比如OpenAI Embeddings)构建相似度索引,替代默认的内部索引机制。你需要先配置GraphDB连接到第三方嵌入服务,之后就能在SPARQL查询中指定使用该模型。

配置步骤概述

  1. 配置外部嵌入服务:在GraphDB的工作区设置或graphdb.properties配置文件中,填入第三方服务的关键参数。以OpenAI为例:

    • 设置嵌入服务端点:similarity.embedding.service.url=https://api.openai.com/v1/embeddings
    • 填入API密钥:similarity.embedding.service.api.key=你的OpenAI API密钥
    • 指定目标模型:similarity.embedding.service.model=text-embedding-ada-002
  2. 修改SPARQL查询创建外部索引:调整原有的INSERT查询,明确指定使用外部嵌入服务生成向量。

修改后的SPARQL查询示例

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ex: <http://example.org/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <http://www.ontotext.com/graphdb/similarity/>
PREFIX similarity-index: <http://www.ontotext.com/graphdb/similarity/instance/>
PREFIX pred: <http://www.ontotext.com/graphdb/similarity/psi/>

INSERT {
    similarity-index:PRODUCTS_EXTERNAL_INDEX 
        pred:createExternalEmbeddingIndex "" ;  # 标记使用外部嵌入服务
        pred:subject ?documentID ;
        pred:object ?combinedText .  # 传入文本供外部模型生成嵌入向量
} WHERE {
    SELECT ?documentID (GROUP_CONCAT(?finalText; SEPARATOR=" ") AS ?combinedText)
    WHERE {
        ?documentID rdf:type ex:PRODUCTS ;
                    ?p ?documentText .  
        
        FILTER(isLiteral(?documentText) || isURI(?documentText))  
        
        OPTIONAL {
            ?documentText rdfs:label ?label .
            FILTER(isLiteral(?label))
            BIND(?label AS ?finalText)
        }
    
        BIND(IF(isLiteral(?documentText), ?documentText, ?finalText) AS ?finalText)
    }
    GROUP BY ?documentID
}

关键细节说明

  • pred:createExternalEmbeddingIndex:这个谓词用于告知GraphDB,使用预配置的外部嵌入服务生成向量,而非内部的TF-IDF等默认机制。
  • 索引结构简化:外部嵌入索引无需指定pred:predicate,只需关联待生成嵌入的文本内容和对应的资源主体。
  • 检索时的适配:后续进行相似度检索时,同样要基于外部嵌入服务生成查询文本的向量,示例查询如下:
PREFIX : <http://www.ontotext.com/graphdb/similarity/>
PREFIX similarity-index: <http://www.ontotext.com/graphdb/similarity/instance/>
PREFIX pred: <http://www.ontotext.com/graphdb/similarity/psi/>

SELECT ?documentID ?score
WHERE {
    ?search a :ExternalEmbeddingSearch ;
            :index similarity-index:PRODUCTS_EXTERNAL_INDEX ;
            :searchText "你的查询文本" ;
            :result ?result .
    ?result :score ?score ;
            :item ?documentID .
}
ORDER BY DESC(?score)

注意事项

  • 确保GraphDB服务器能正常访问第三方嵌入服务的API端点,若有网络限制需配置代理参数。
  • 不同第三方模型的配置细节可能有差异,需根据GraphDB官方文档调整对应参数。
  • 使用付费第三方服务(如OpenAI)时,需注意API调用成本控制。

内容的提问来源于stack exchange,提问作者Vanaja Uthayakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:13:26