优化代码,提高解耦
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
from langchain_huggingface import HuggingFaceEmbeddings
|
||||
from embeddings import get_embeddings
|
||||
|
||||
# 第一次运行可能时间较久
|
||||
print('---正在首次加载本地嵌入模型(bge-small-zh-v1.5)...---')
|
||||
|
||||
# 首次运行可能时间较久 -- 同时运行本文件需要梯子,不然无法加载到本地
|
||||
print('---正在加载本地嵌入模型(bge-small-zh-v1.5)...---')
|
||||
|
||||
# 理论:有embedding的向量模型
|
||||
embeddings_model = HuggingFaceEmbeddings(
|
||||
model_name="BAAI/bge-small-zh-v1.5" # 一个中英双语开源模型
|
||||
)
|
||||
embeddings_model = get_embeddings("bge-small-zh-v1.5")
|
||||
print('嵌入模型载入完毕')
|
||||
|
||||
# 演示:将文本转换为向量
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# 仅负责: 切片 -> 向量化 -> 构建索引 -> 保存到磁盘
|
||||
# 运行一次即可,无需每次检索都运行
|
||||
|
||||
from embeddings import get_embeddings
|
||||
import os
|
||||
from langchain_community.document_loaders import TextLoader
|
||||
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
||||
from langchain_huggingface import HuggingFaceEmbeddings
|
||||
from langchain_community.vectorstores import FAISS
|
||||
|
||||
# 准备知识库内容
|
||||
@@ -48,7 +47,7 @@ splits = text_splitter.split_documents(docs) # 运行切分器
|
||||
print(f'p1完成,文档已切分成{len(splits)}个片段\n')
|
||||
|
||||
# 2. 向量化(Embedding)
|
||||
embeddings_model = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh-v1.5") # 载入向量化模型
|
||||
embeddings_model = get_embeddings() # 载入向量化模型
|
||||
print(f'p2完成,Embedding模型已准备\n') #
|
||||
|
||||
# 3. 存储(Store)
|
||||
@@ -61,17 +60,3 @@ print(f'p3完成,向量数据库{db}已构建')
|
||||
os.remove("knowledge_base.txt")
|
||||
|
||||
print('---所有阶段已经完成!---')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
from embeddings import get_embeddings
|
||||
from config import OPENAI_API_KEY
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
api_key = os.getenv("OPENAI_API_KEY")
|
||||
|
||||
from langchain_community.document_loaders import TextLoader
|
||||
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
||||
from langchain_huggingface import HuggingFaceEmbeddings
|
||||
from langchain_community.vectorstores import FAISS
|
||||
from langchain_openai import ChatOpenAI
|
||||
from langchain_core.prompts import ChatPromptTemplate
|
||||
@@ -43,8 +39,8 @@ loader = TextLoader('knowledge_base.txt',encoding='utf8')
|
||||
docs = loader.load()
|
||||
text_splitter = RecursiveCharacterTextSplitter(chunk_size=250,chunk_overlap=40)
|
||||
splits = text_splitter.split_documents(docs)
|
||||
embedding_model = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh-v1.5")
|
||||
db = FAISS.from_documents(splits,embedding_model)
|
||||
embedding_model = get_embeddings("bge-small-zh-v1.5")
|
||||
db = FAISS.from_documents(splits,embedding_model) # 在内存中构建向量索引,但不持久化到本地文件
|
||||
print('---模块A(Indexing)完成---\n')
|
||||
|
||||
|
||||
@@ -75,7 +71,7 @@ prompt = ChatPromptTemplate.from_messages([
|
||||
# 3. G (Generation - 生成)
|
||||
llm = ChatOpenAI(
|
||||
model="deepseek-chat",
|
||||
api_key=api_key,
|
||||
api_key=OPENAI_API_KEY,
|
||||
base_url="https://api.deepseek.com"
|
||||
)
|
||||
|
||||
@@ -111,15 +107,3 @@ print(f'回答:{response}\n')
|
||||
|
||||
# 清理临时文件
|
||||
os.remove("knowledge_base.txt")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user