日志检索器跟踪
注意
如果您没有以正确的格式记录检索器跟踪,则不会发生任何中断,并且仍会记录数据。但是,数据不会以特定于检索器步骤的方式呈现。
许多 LLM 应用程序需要从矢量数据库、知识图谱或其他类型的索引中查找文档。检索器跟踪是记录检索器检索到的文档的一种方式。 LangSmith 为跟踪中的检索步骤提供特殊渲染,以便更轻松地理解和诊断检索问题。为了正确呈现检索步骤,需要执行一些小步骤。
- 使用 注释 retriever 步骤
run_type="retriever". - 从 retriever 步骤返回 Python 字典或 TypeScript 对象的列表。每个字典应包含以下键:
page_content:文档的文本。type:这应始终为 “Document”。metadata:包含有关文档的元数据的 python 字典或 TypeScript 对象。此元数据将显示在跟踪中。
以下代码片段显示了如何在 Python 和 TypeScript 中记录检索步骤。
- 蟒
- TypeScript (类型脚本)
from langsmith import traceable
def _convert_docs(results):
return [
{
"page_content": r,
"type": "Document",
"metadata": {"foo": "bar"}
}
for r in results
]
@traceable(run_type="retriever")
def retrieve_docs(query):
# Foo retriever returning hardcoded dummy documents.
# In production, this could be a real vector datatabase or other document index.
contents = ["Document contents 1", "Document contents 2", "Document contents 3"]
return _convert_docs(contents)
retrieve_docs("User query")
import { traceable } from "langsmith/traceable";
interface Document {
page_content: string;
type: string;
metadata: { foo: string };
}
function convertDocs(results: string[]): Document[] {
return results.map((r) => ({
page_content: r,
type: "Document",
metadata: { foo: "bar" }
}));
}
const retrieveDocs = traceable(
(query: string): Document[] => {
// Foo retriever returning hardcoded dummy documents.
// In production, this could be a real vector database or other document index.
const contents = ["Document contents 1", "Document contents 2", "Document contents 3"];
return convertDocs(contents);
},
{ name: "retrieveDocs", run_type: "retriever" } // Configuration for traceable
);
await retrieveDocs("User query");
下图显示了如何在跟踪中呈现检索器步骤。内容和元数据与每个文档一起显示。
