使用langchain支持openai的向量化embedding

智增增api8个月前发布 zhizengzeng
320 0

Embedding是什么?网上内容很多,不过多解释,问了下chatgpt,它的解释如下:

在自然语言处理和机器学习领域,"embeddings" 是指将单词、短语或文本转换成连续向量空间的过程。这个向量空间通常被称为嵌入空间(embedding space),而生成的向量则称为嵌入向量(embedding vector)或向量嵌入(vector embedding)。

嵌入向量可以捕获单词、短语或文本的语义信息,使得它们可以在数学上进行比较和计算。这种比较和计算在自然语言处理和机器学习中经常被用于各种任务,例如文本分类、语义搜索、词语相似性计算等。

在中文语境下,"embeddings" 通常被翻译为 "词向量" 或者 "向量表示"。这些翻译强调了嵌入向量的特点,即将词汇转换成向量,并表示为嵌入空间中的点。

OpenAI 中的文本 Embedding 衡量文本字符串之间的相关性。Embedding 通常用于以下场景:

  1. 搜索(结果按查询字符串的相关性进行排序)
  2. 聚类(将文本字符串按相似性分组)
  3. 推荐(推荐具有相关文本字符串的项目)
  4. 异常检测(识别相关性较小的异常值)
  5. 多样性测量(分析相似度分布)
  6. 分类(文本字符串按其最相似的标签进行分类)

直接上代码:

1、首先需要拿到openai的key和url,

项目github地址:github.com/xing61/xiaoy

  • 第2步:编写代码。注意配置的base_url是:https://flag.smarttrot.com/v1

2、开始撸python代码:(其它语言类似)

langchain,核心其实在于key和url的设置,使用环境变量来设置

import os
import requests
import time
import json
import time
from langchain.llms import OpenAI
from langchain.embeddings.openai import OpenAIEmbeddings

API_SECRET_KEY = "你的智增增的key";
BASE_URL = "https://flag.smarttrot.com/v1"; #智增增的base-url

os.environ["OPENAI_API_KEY"] = API_SECRET_KEY
os.environ["OPENAI_API_BASE"] = BASE_URL

# 根据你提供的输入来预测输出,也就是进行问答:
def text():
    llm = OpenAI(temperature=0.9)
    text = "What would be a good company name for a company that makes colorful socks?"
    print(llm(text))

def embedding():
    embeddings = OpenAIEmbeddings()
    #text = "This is a test document."
    #doc_result = embeddings.embed_documents([text]);
    doc_result = embeddings.embed_documents(
        [
            "Hi there!",
            "Oh, hello!",
            "What's your name?",
            "My friends call me World",
            "Hello World!"
        ]
    );
    print(doc_result)
    # 查询
    embedded_query = embeddings.embed_query("What was the name mentioned in the conversation?")
    print(embedded_query)

if __name__ == '__main__':
    #text();
    embedding();

完成。

© 版权声明

相关文章

暂无评论

暂无评论...