一、准备模型
Llama-index为智谱构建的专门的包,准备好一个llm模型和一个embedding模型。
二、准备文档并构建索引
方法一:
Documents可以直接构建index
方法二:
先构建节点:将文档按某一大小分割为文本块,每个文本块作为一个节点。
再构建索引:通过VectorStoreIndex将文本块转为向量表示并存储到数据库中。
因为某些未知原因,方法二需要将两个包降级到以下这个版本。
llama-index-core==0.12.12
llama-index-vector-stores-faiss==0.3.0
方法三:
构建索引器
通过VectorIndexRetriever函数将文档存储进检索器中,并给予检索器相关的参数。
# 构建检索器
from llama_index.core.retrievers import VectorIndexRetriever
# 想要自定义参数,可以构造参数字典
kwargs = {'similarity_top_k': 5, 'index': index, 'dimensions': dimensions} # 必要参数
retriever = VectorIndexRetriever(**kwargs)
再构建合成器
通过get_response_synthesizer函数创建引入了大模型的响应合成器。
# 构建合成器
from llama_index.core.response_synthesizers import get_response_synthesizer
response_synthesizer = get_response_synthesizer(llm=llm)
再组装成问答引擎
通过RetrieverQueryEngine函数,结合检索器和响应合成器。
检索器的作用是根据用户的查询从索引中找出相关的文档片段。
响应合成器会将检索器返回的相关文档片段与用户的查询结合,调用大语言模型生成最终的自然语言回答。
# 构建问答引擎
from llama_index.core.query_engine import RetrieverQueryEngine
engine = RetrieverQueryEngine(
retriever=retriever,
response_synthesizer=response_synthesizer
)
方法四:
利用Qdrant向量库
%pip install qdrant-client
%pip install llama-index-vector-stores-qdrant
%pip install llama-index-readers-file
明天再补充