RAG(1):管道Pipeline
基础的RAG Pipeline

# 设置RGA基本管道
from llama_index import SimpleDirectoryReader
from llama_index import Document
from llama_index import VectorStoreIndex
from llama_index import ServiceContext
from llama_index.llms import OpenAI
# 加载文档documents
documents = SimpleDirectoryReader(
input_files=["./eBook-How-to-Build-a-Career-in-AI.pdf"]
).load_data()
# 分块chunk
document = Document(text="\n\n".join([doc.text for doc in documents]))
# 编码embedding
llm = OpenAI(model="gpt-3.5-turbo", temperature=0.1)
service_context = ServiceContext.from_defaults(
llm=llm, embed_model="local:BAAI/bge-small-en-v1.5"
)
# 转为索引index
index = VectorStoreIndex.from_documents([document],
service_context=service_context)
# 从索引中获取Query
query_engine = index.as_query_engine()
# 发送请求response
response = query_engine.query(
"What are steps to take when finding projects to build your experience?"
)
通过答案相关性、上下文相关性和立足性进行评估

# 对RAG管道进行评估
# 创建进行评估的问题
eval_questions = []
with open('eval_questions.txt', 'r') as file:
for line in file:
# Remove newline character and convert to integer
item = line.strip()
print(item)
eval_questions.append(item)
# You can try your own question:
new_question = "What is the right AI job for me?"
eval_questions.append(new_question)
# 初始化数据库和评估模块
from trulens_eval import Tru
tru = Tru()
tru.reset_database()
# recorder记录的三项评估要求
from utils import get_prebuilt_trulens_recorder
tru_recorder = get_prebuilt_trulens_recorder(query_engine,
app_id="Direct Query Engine")
# 记录器进行评估
with tru_recorder as recording:
for question in eval_questions:
response = query_engine.query(question)
# 利用ID来实现跟踪、查看结果
records, feedback = tru.get_records_and_feedback(app_ids=[])
句窗检索Sentence Window retrieval

# 使用其他检索方式来提高匹配精度
# 1.句窗检索
from utils import build_sentence_window_index
from utils import get_sentence_window_query_engine
## 创建索引
sentence_index = build_sentence_window_index(
document,
llm,
embed_model="local:BAAI/bge-small-en-v1.5",
save_dir="sentence_index"
)
## 从索引中获取Query
sentence_window_engine = get_sentence_window_query_engine(sentence_index)
## 设置记录器进行评估,设置问答的例子
tru.reset_database()
tru_recorder_sentence_window = get_prebuilt_trulens_recorder(
sentence_window_engine,
app_id = "Sentence Window Query Engine"
)
## 运行句窗检索器
for question in eval_questions:
with tru_recorder_sentence_window as recording:
response = sentence_window_engine.query(question)
print(question)
print(str(response))
## 查看结果榜单
tru.get_leaderboard(app_ids=[])
## 通过仪表盘显示
tru.run_dashboard()
自动合并检索Auto-merging retrieval

from utils import build_automerging_index
# 2.自动更新检索
## 创建索引
automerging_index = build_automerging_index(
documents,
llm,
embed_model="local:BAAI/bge-small-en-v1.5",
save_dir="merging_index"
)
## 从索引中获取Query
automerging_query_engine = get_automerging_query_engine(
automerging_index,
)
## 提问过程中进行merging
auto_merging_response = automerging_query_engine.query(
"How do I build a portfolio of AI projects?"
)
## 设置记录器进行评估,设置问答的例子
tru.reset_database()
tru_recorder_automerging = get_prebuilt_trulens_recorder(automerging_query_engine,
app_id="Automerging Query Engine")
## 运行句窗检索器
for question in eval_questions:
with tru_recorder_automerging as recording:
response = automerging_query_engine.query(question)
print(question)
print(response)
## 查看结果榜单
tru.get_leaderboard(app_ids=[])
## 通过仪表盘显示
tru.run_dashboard()
浙公网安备 33010602011771号