在我尝试嵌入一个字符串之前,我如何知道它有多少个标记?
对于 v2 嵌入模型,截至 2022 年 12 月,还没有办法将字符串拆分为标记。获取令牌总数的唯一方法是提交 api 请求。
-
如果请求成功,您可以从响应中提取令牌数:`response[“usage”][“total_tokens”]`
-
如果请求因令牌太多而失败,您可以从错误消息中提取令牌数:`此模型的最大上下文长度为 8191 个令牌,但是您请求了 10000 个令牌(提示中为 10000;完成时为 0)。请减少您的提示;或完成长度。`
对于基于 gpt-2/gpt-3 标记化的 v1 嵌入模型,您可以通过以下几种方式计算标记:
-
对于一次性检查,openai 分词器页面很方便
-
在 python 中,(gpt-2 分词器与 gpt-3 相同)
-
在 javascript 中,
如何快速检索 k 个最近的嵌入向量?
为了快速搜索多个,我们建议使用数据库。
矢量数据库选项包括:
-
,一个完全托管的矢量数据库
-
,一个开源矢量搜索引擎
-
, facebook 的矢量搜索算法
我应该使用哪个距离函数?
我们推荐。距离函数的选择通常无关紧要。
openai 嵌入被归一化为长度 1,这意味着:
-
仅使用点积可以稍微更快地计算余弦相似度
-
余弦相似度和欧几里德距离将导致相同的排名
中国体验版点击进入:
未经允许不得转载:尊龙游戏旗舰厅官网 » 在我尝试嵌入一个字符串之前,我如何知道它有多少个标记?