博客
关于我
04-faiss_chinese_path_content_rag
阅读量:799 次
发布时间:2023-03-23

本文共 1134 字,大约阅读时间需要 3 分钟。

从 langchain.document_loaders 导入相关加载器,根据文件格式选择合适的文档加载器进行文件加载。文件分块采用 langchain.text_splitter 的 RecursiveCharacterTextSplitter,支持文档块的分割和重叠设置。
# 加载和分块文档
def load_and_split_documents(file_path):
输入文件路径进行有效性检查,确保文件路径存在且为有效文件。
根据文件扩展名选择合适的加载器:.pdf 使用 PyPDFLoader,.docx 使用 Docx2txtLoader,.txt 使用 TextLoader。
载入文档块并输出加载结果。
对文档块进行分块处理,设置每个文档块的字符数量和重叠数量,输出分块结果。
# 使用 Ollama 的 nomic-embed-text 生成嵌入
class NomicEmbedText(Embeddings):
初始化 Ollama 嵌入模型,设置默认嵌入模型和服务地址。
实现 embed_query 方法,发送嵌入请求并处理响应。
实现 embed_documents 方法,批量嵌入文本内容。
# 创建向量存储并保存到本地
def create_vector_store(chunks, save_path="faiss_向量库"):
使用 NomicEmbedText 嵌入模型对文档块进行嵌入计算。
提取文档块的嵌入向量,并与文档块信息封装到 FAISS 向量存储中。
保存 FAISS 向量库到本地文件系统,输出保存路径。
# 设置 RAG 管道
def setup_rag_pipeline(vector_store):
初始化 Ollama 模型,指定模型名称和服务地址。
创建 RetrievalQA 管道,设置链类型和检索器参数,输出RAG管道实例。
# 查询 RAG 管道
def query_rag_pipeline(qa_pipeline, question):
对输入问题使用 RAG 管道进行检索,输出检索结果。
# 主函数
def main():
输入文件路径,检查文件是否存在。
调用 load_and_split_documents 加载和分块文档。
调用 create_vector_store 创建并保存向量库。
调用 setup_rag_pipeline 设置 RAG 管道。
调用 query_rag_pipeline 对问题进行检索,输出检索结果。

转载地址:http://moqfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现基于事件对象实现线程同步(附完整源码)
查看>>
Objective-C实现基于文件流拷贝文件(附完整源码)
查看>>
Objective-C实现基于模板的双向链表(附完整源码)
查看>>
Objective-C实现基于模板的顺序表(附完整源码)
查看>>
Objective-C实现基本二叉树算法(附完整源码)
查看>>
Objective-C实现堆排序(附完整源码)
查看>>
Objective-C实现声音录制播放程序(附完整源码)
查看>>
Objective-C实现备忘录模式(附完整源码)
查看>>
Objective-C实现复制粘贴文本功能(附完整源码)
查看>>
Objective-C实现复数类+-x%(附完整源码)
查看>>
Objective-C实现外观模式(附完整源码)
查看>>
Objective-C实现多尺度MSR算法(附完整源码)
查看>>
Objective-C实现多种方法求解定积分(附完整源码)
查看>>
Objective-C实现多组输入(附完整源码)
查看>>
Objective-C实现多项式函数在某个点的评估算法(附完整源码)
查看>>
Objective-C实现多项式哈希算法(附完整源码)
查看>>
Objective-C实现大位数乘法(附完整源码)
查看>>
Objective-C实现大根堆(附完整源码)
查看>>
Objective-C实现奇偶检验码(附完整源码)
查看>>
Objective-C实现奇偶转置排序算法(附完整源码)
查看>>