在对话输入前用一次llama-index就可以不用skill也能导入skill
好处是可以不用skill文件夹,而且是100%导入skill
·

把skill写成txt让llama-index去检索直接导入上下文
Llamaindex可以选出最相关的文档
好处是可以不用skill文件夹,而且是100%导入skill
我的情况是,ai不爱用read skill文档方法,然后我得写prompt让ai调用方法前必须调用read方法,然后普通对话他也给我用read skill
不过有新的问题,原本skill的活变成rag做了,如果有相关记忆可能冲突
def retrieve_document_chunks(query_text="你的问题", top_k=1):
"""
仅检索文档中的相关文本块,不进行问答生成
Args:
query_text (str): 查询的问题文本
top_k (int): 返回最相似的文本块数量,默认5个
Returns:
str: 格式化的检索结果字符串
"""
if not os.path.exists(memory_dir):
os.makedirs(memory_dir)
try:
# 加载文档数据
documents = SimpleDirectoryReader("E:/code/my_python_server/memory_server/memory_data").load_data()
# 创建向量索引
index = VectorStoreIndex.from_documents(documents)
# 创建检索器
retriever = index.as_retriever(similarity_top_k=top_k)
# 执行检索
nodes = retriever.retrieve(query_text)
# 构建格式化的字符串结果
result_lines = []
result_lines.append(f"共检索到 {len(nodes)} 个相关文本块:")
result_lines.append("")
for i, node in enumerate(nodes, 1):
result_lines.append(f"--- 文本块 {i} ---")
result_lines.append(node.text)
# 添加相似度分数(如果存在)
if hasattr(node, 'score') and node.score is not None:
result_lines.append(f"相似度分数: {node.score:.4f}")
result_lines.append("")
result_str = "\n".join(result_lines)
print(f"检索完成: {result_str}")
return result_str
except Exception as e:
error_msg = f"文档检索出错: {e}"
print(error_msg)
return error_msg
更多推荐


所有评论(0)