citation

package
v0.5.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 13, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

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

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) ClearHistory

func (t *AutoTracker) ClearHistory()

ClearHistory 清除追踪历史

func (*AutoTracker) History

func (t *AutoTracker) History() []TrackRecord

History 返回追踪历史记录

func (*AutoTracker) QueryWithCitations

func (t *AutoTracker) QueryWithCitations(ctx context.Context, query string) (*TrackedResponse, error)

QueryWithCitations 执行带自动引文追踪的查询

自动完成以下步骤:

  1. 检索相关文档
  2. 生成带引用的回答
  3. 建立句子→来源的映射关系
  4. 计算引用置信度
  5. 可选:验证引用准确性

func (*AutoTracker) Retrieve

func (t *AutoTracker) Retrieve(ctx context.Context, query string, opts ...rag.RetrieveOption) ([]rag.Document, error)

Retrieve 作为 Retriever 的包装,在检索时自动记录来源

实现 rag.Retriever 接口,可以直接替换原有的 Retriever。

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 New

func New(retriever rag.Retriever, provider llm.Provider, opts ...Option) *CitationEngine

New 创建引用追踪引擎

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

func WithMinSimilarity(sim float32) Option

WithMinSimilarity 设置最小相似度 默认值: 0.5

func WithTopK

func WithTopK(k int) Option

WithTopK 设置检索文档数 默认值: 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 WithAutoVerify

func WithAutoVerify(enabled bool) TrackerOption

WithAutoVerify 启用自动验证引用准确性

func WithHistory

func WithHistory(enabled bool) TrackerOption

WithHistory 启用追踪历史记录

func WithMinConfidence

func WithMinConfidence(conf float32) TrackerOption

WithMinConfidence 设置最小引用置信度

func WithTrackerStyle

func WithTrackerStyle(style CitationStyle) TrackerOption

WithTrackerStyle 设置引用样式

func WithTrackerTopK

func WithTrackerTopK(k int) TrackerOption

WithTrackerTopK 设置检索文档数

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL