Documentation
¶
Overview ¶
Package citation 提供引用追踪功能
Citation Engine 在生成回答时自动添加引用标注, 确保每个声明都能追溯到来源文档。
功能:
- 自动识别需要引用的内容
- 在回答中添加引用标记 [1], [2] 等
- 追踪引用与来源的对应关系
- 支持多种引用格式
使用示例:
engine := citation.New(
retriever,
llmProvider,
citation.WithCitationStyle(citation.StyleNumeric),
)
response, err := engine.Query(ctx, "用户问题")
// response.Content 包含带引用的回答
// response.Citations 包含引用列表
Index ¶
- type AutoTracker
- func (t *AutoTracker) ClearHistory()
- func (t *AutoTracker) History() []TrackRecord
- func (t *AutoTracker) QueryWithCitations(ctx context.Context, query string) (*TrackedResponse, error)
- func (t *AutoTracker) Retrieve(ctx context.Context, query string, opts ...rag.RetrieveOption) ([]rag.Document, error)
- type Citation
- type CitationEngine
- type CitationStyle
- type CitedResponse
- type Option
- type TrackRecord
- type TrackedResponse
- type TrackerOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AutoTracker ¶
type AutoTracker struct {
// contains filtered or unexported fields
}
AutoTracker 自动引文追踪器
作为 RAG 管道的中间件自动追踪引文来源,无需手动配置。 它包装了 Retriever 和 Synthesizer,在检索和合成过程中 自动建立答案与源文档之间的双向映射关系。
功能:
- 自动在 RAG 管道中插入引文追踪
- 追踪每段回答文本对应的源文档
- 自动计算引文置信度(基于文本重叠度)
- 支持多种输出格式:行内引用、脚注、参考文献列表
- 线程安全,可并发使用
使用示例:
tracker := citation.NewAutoTracker(retriever, llmProvider) result, err := tracker.QueryWithCitations(ctx, "用户问题") // result.Content 包含自动添加的引用标记 // result.SourceMap 包含句子→来源文档的映射
func NewAutoTracker ¶
func NewAutoTracker(retriever rag.Retriever, provider llm.Provider, opts ...TrackerOption) *AutoTracker
NewAutoTracker 创建自动引文追踪器
func (*AutoTracker) QueryWithCitations ¶
func (t *AutoTracker) QueryWithCitations(ctx context.Context, query string) (*TrackedResponse, error)
QueryWithCitations 执行带自动引文追踪的查询
自动完成以下步骤:
- 检索相关文档
- 生成带引用的回答
- 建立句子→来源的映射关系
- 计算引用置信度
- 可选:验证引用准确性
type Citation ¶
type Citation struct {
// Index 引用编号(从 1 开始)
Index int `json:"index"`
// Marker 引用标记(如 "[1]")
Marker string `json:"marker"`
// Text 被引用的文本片段
Text string `json:"text"`
// SourceID 来源文档 ID
SourceID string `json:"source_id"`
// SourceTitle 来源标题(如果有)
SourceTitle string `json:"source_title,omitempty"`
// SourceURL 来源 URL(如果有)
SourceURL string `json:"source_url,omitempty"`
// StartPosition 引用在回答中的起始位置
StartPosition int `json:"start_position,omitempty"`
// EndPosition 引用在回答中的结束位置
EndPosition int `json:"end_position,omitempty"`
}
Citation 引用信息
type CitationEngine ¶
type CitationEngine struct {
// contains filtered or unexported fields
}
CitationEngine 引用追踪引擎
func (*CitationEngine) GenerateStructuredCitation ¶
func (e *CitationEngine) GenerateStructuredCitation(ctx context.Context, query string, docs []rag.Document) (*CitedResponse, error)
GenerateStructuredCitation 生成结构化的引用响应 使用 LLM 生成带有明确引用的 JSON 格式响应
func (*CitationEngine) Query ¶
func (e *CitationEngine) Query(ctx context.Context, query string) (*CitedResponse, error)
Query 执行带引用的查询
type CitationStyle ¶
type CitationStyle string
CitationStyle 引用样式
const ( // StyleNumeric 数字样式 [1], [2], [3] StyleNumeric CitationStyle = "numeric" // StyleAuthorYear 作者年份样式 (Author, 2024) StyleAuthorYear CitationStyle = "author_year" // StyleFootnote 脚注样式 ¹, ², ³ StyleFootnote CitationStyle = "footnote" )
type CitedResponse ¶
type CitedResponse struct {
// Content 带引用标记的回答内容
Content string `json:"content"`
// RawContent 无引用标记的原始内容
RawContent string `json:"raw_content"`
// Citations 引用列表
Citations []Citation `json:"citations"`
// Sources 来源文档列表
Sources []rag.Document `json:"sources"`
// Bibliography 参考文献列表(格式化)
Bibliography string `json:"bibliography,omitempty"`
}
CitedResponse 带引用的响应
type Option ¶
type Option func(*CitationEngine)
Option 配置选项
func WithCitationStyle ¶
func WithCitationStyle(style CitationStyle) Option
WithCitationStyle 设置引用样式 默认值: StyleNumeric
func WithMinSimilarity ¶
WithMinSimilarity 设置最小相似度 默认值: 0.5
type TrackRecord ¶
type TrackRecord struct {
// Query 用户查询
Query string `json:"query"`
// SourceDocs 检索到的源文档
SourceDocs []rag.Document `json:"source_docs"`
// Citations 引用列表
Citations []Citation `json:"citations"`
// SourceMap 句子→来源映射
SourceMap map[string][]string `json:"source_map"`
// Confidence 整体引用置信度
Confidence float32 `json:"confidence"`
}
TrackRecord 追踪记录
type TrackedResponse ¶
type TrackedResponse struct {
// Content 带引用标记的回答
Content string `json:"content"`
// RawContent 原始回答(无引用标记)
RawContent string `json:"raw_content"`
// Citations 引用列表
Citations []Citation `json:"citations"`
// Sources 来源文档
Sources []rag.Document `json:"sources"`
// SourceMap 句子→来源文档 ID 映射
SourceMap map[string][]string `json:"source_map"`
// Bibliography 参考文献
Bibliography string `json:"bibliography"`
// Confidence 整体引用置信度 (0-1)
Confidence float32 `json:"confidence"`
// UnverifiedClaims 无法验证来源的声明
UnverifiedClaims []string `json:"unverified_claims,omitempty"`
}
TrackedResponse 带自动追踪的响应
type TrackerOption ¶
type TrackerOption func(*trackerConfig)
TrackerOption 追踪器配置选项
func WithMinConfidence ¶
func WithMinConfidence(conf float32) TrackerOption
WithMinConfidence 设置最小引用置信度
func WithTrackerStyle ¶
func WithTrackerStyle(style CitationStyle) TrackerOption
WithTrackerStyle 设置引用样式