Documentation
¶
Index ¶
- Constants
- Variables
- func Abs(n int) int
- func CalcDirSizes(dataDir string) map[string]int64
- func CheckModel(modelId, modelFile string) (string, error)
- func ComputeChunkContentHash(content string) string
- func ComputeFileHash(absPath string) (string, error)
- func Contains(slice []string, val string) bool
- func DirExists(path string) bool
- func DirSize(path string) int64
- func FileExists(path string) bool
- func FilterHitBySourcePrefix(hit *core.Hit, filterPath string) *core.Hit
- func GetGraphCount(dbPath string) (nodes int64, edges int64)
- func GetVectorCount(dbPath string) int
- func HasAPIKey(ragDir string) bool
- func Init(ragDir string) error
- func IsDataFile(filename string) bool
- func IsIndexableFile(filename string) bool
- func IsTextFile(filename string) bool
- func LoadRagignore(ragDir string) []string
- func MatchRagignoreDir(dirPath, scanRoot string, patterns []string) bool
- func MatchRagignoreEntry(name, rel string, patterns []string) bool
- func Open(ragDir string, opts ...RAGOption) (indexer.Indexer, error)
- func QueryGraphCount(ctx context.Context, db *api.DB, query string) int64
- func ResolveAPIKey(ragDir string) (string, error)
- func SaveConfig(ragDir string, cfg *Config) error
- func ScanDir(dir string, basePatterns []string) ([]string, error)
- func SourceHasPrefix(source, filterPath string) bool
- func TimePtr(t time.Time) *time.Time
- func TopChunkScore(hits []core.ChunkHit) float32
- func WriteAPIKey(ragDir, apiKey string) error
- type Config
- type EmbeddingConfig
- type IndexerConfig
- type LLMConfig
- type QueryConfig
- type RAGOption
- type StorageConfig
Constants ¶
const ( GORAG_MODEL_PATH = "GORAG_MODEL_PATH" GORAG_BASE_URL = "GORAG_BASE_URL" GORAG_API_KEY = "GORAG_API_KEY" GORAG_AUTH_TOKEN = "GORAG_AUTH_TOKEN" GORAG_MODEL = "GORAG_MODEL" )
环境变量常量
Variables ¶
var DataExts = []string{
".csv", ".xls", ".xlsx",
".json", ".yaml", ".yml",
".xml", ".toml", ".log",
".eml", ".msg",
}
DataExts 可索引的数据类文件扩展名列表(解析为 JSON 字符串)。
涵盖:csv/xls/xlsx/json/yaml/yml/xml/toml/log/eml/msg。 这些文件不进入 TextExts,因为它们的归一化策略不同(输出 JSON 字符串而非原文)。
var TextExts = []string{
".txt", ".md", ".json", ".yaml", ".yml",
".html", ".xml", ".css",
".go", ".py", ".js", ".ts", ".java", ".c", ".cpp", ".h",
".sh", ".bash", ".zsh",
".sql", ".conf", ".cfg", ".ini",
}
TextExts 可索引的文本文件扩展名列表
Functions ¶
func CalcDirSizes ¶ added in v2.0.13
CalcDirSizes 递归计算各子目录大小。
func CheckModel ¶
CheckModel 检查模型文件是否存在,不存在则从 HuggingFace 下载
func ComputeChunkContentHash ¶ added in v2.0.13
ComputeChunkContentHash 计算分片内容的简短哈希(SHA256 前 16 位十六进制)。
func ComputeFileHash ¶ added in v2.0.13
ComputeFileHash 计算文件的 SHA256 哈希值。
func FileExists ¶ added in v2.0.13
FileExists 判断文件是否存在(目录返回 false)。
func FilterHitBySourcePrefix ¶ added in v2.0.13
FilterHitBySourcePrefix 按 source 路径前缀过滤命中结果。
func GetGraphCount ¶ added in v2.0.13
GetGraphCount 获取图索引的节点和边数量。
func GetVectorCount ¶ added in v2.0.13
GetVectorCount 获取向量索引中的条目数。
func Init ¶ added in v2.0.13
Init 在指定路径创建数据目录结构。 物理结构 = config.yml + .api_key + .ragignore + .lock + meta.db + vectors/ + graphs/ + logs/。
已存在的目录会被复用(不报错),但缺失的子目录和文件会被补齐。
func IsDataFile ¶ added in v2.0.13
IsDataFile 判断是否为可索引的数据类文件(CSV / XLSX / JSON / 等)。
数据类文件的归一化策略是输出 JSON 字符串(不同于文本类输出原文)。 与 IsTextFile 是并列关系。
func IsIndexableFile ¶ added in v2.0.13
IsIndexableFile 判断文件是否应被索引(文本类 + 数据类)。 这是 ScanDir 与 index 单文件入口的统一判断入口。
func LoadRagignore ¶ added in v2.0.13
LoadRagignore 从 .rag 目录加载 .ragignore 忽略规则。 返回非空、非注释的规则行列表。文件不存在时返回空切片。
func MatchRagignoreDir ¶ added in v2.0.13
MatchRagignoreDir 判断目录是否匹配任一 .ragignore 规则。 规则支持目录匹配(尾随 /)和文件名匹配。
func MatchRagignoreEntry ¶ added in v2.0.13
MatchRagignoreEntry 是 matchRagignoreEntry 的导出版本,供 webapi 等外部包使用。
func Open ¶
Open 打开已存在的数据目录。 opts 可注入 WithLLM、WithEmbeddingModelFile 等。
行为:
- 加载 config.yml
- 根据 cfg.Indexer.Type 创建索引器
- 若有 LLM 配置,则创建 gochat 客户端并注入 GraphIndexer/HyperIndexer
func QueryGraphCount ¶ added in v2.0.13
QueryGraphCount 执行图查询获取计数值。
func ResolveAPIKey ¶ added in v2.0.13
ResolveAPIKey 解析 LLM API Key,按四级回退策略:
- 环境变量 GORAG_API_KEY(最高优先级,CI/CD 友好)
- .rag/.api_key 文件(grag config llm APIKey 写入位置,权限 600)
- 外部文件引用(cfg.LLM.APIKeyFile,自定义路径)
- 系统 keychain(macOS,可选)
API Key 不进 config.yml,独立存于 .rag/.api_key 文件。
func SaveConfig ¶ added in v2.0.13
SaveConfig 更新 .rag 目录的 config.yml(公开 API,供 grag config 调用)
func ScanDir ¶ added in v2.0.13
ScanDir 扫描目录下的所有文本文件,跳过 .ragignore 匹配的目录。
支持层级 .ragignore:每个目录可放置自己的 .ragignore,规则叠加生效。 basePatterns 来自 .rag 库目录的全局规则,作为根目录的默认规则。每个子目录的 本地 .ragignore 规则会附加到父目录规则之上,子目录规则不影响平级目录。
func SourceHasPrefix ¶ added in v2.0.13
SourceHasPrefix 判断 chunk.Source 是否以指定绝对路径开头。 filterPath 必须是已经转换后的绝对路径。 为了避免 /foo 匹配到 /foobar 这类部分路径,函数会自动确保 filterPath 以路径分隔符结尾。
func TopChunkScore ¶ added in v2.0.13
TopChunkScore 返回 ChunkHit 切片中的最高分。
func WriteAPIKey ¶ added in v2.0.13
WriteAPIKey 写入 API Key 到 .rag/.api_key 文件(权限 600)。 API Key 文件权限强制 600(仅 owner 可读写)。
Types ¶
type Config ¶
type Config struct {
Version int `yaml:"version"` // 配置版本号
Storage StorageConfig `yaml:"storage"` // 存储路径配置
Embedding EmbeddingConfig `yaml:"embedding"` // 向量模型配置
LLM LLMConfig `yaml:"llm"` // LLM 配置(不含 APIKey)
Indexer IndexerConfig `yaml:"indexer"` // 索引器配置
Query QueryConfig `yaml:"query"` // 查询配置
}
Config .rag 库的配置文件结构(config.yml)。 分层结构 = storage + embedding + llm + indexer + query。 api_key 不写入 config.yml,独立存于 .rag/.api_key(权限 600)。
func LoadConfig ¶ added in v2.0.13
LoadConfig 从 .rag 目录加载 config.yml(公开 API)
type EmbeddingConfig ¶ added in v2.0.13
type EmbeddingConfig struct {
ModelFile string `yaml:"model_file"` // ONNX 模型文件路径
Dimension int `yaml:"dimension"` // 向量维度
}
EmbeddingConfig 向量模型配置
type IndexerConfig ¶ added in v2.0.13
type IndexerConfig struct {
Type string `yaml:"type"` // semantic | graph | hyper
}
IndexerConfig 索引器配置
type LLMConfig ¶ added in v2.0.13
type LLMConfig struct {
BaseURL string `yaml:"base_url"`
Model string `yaml:"model"`
APIKey string `yaml:"api_key,omitempty"` // API Key
Language string `yaml:"language"` // 内容语言(如 Chinese)
MaxTokens int `yaml:"max_tokens"` // 模型最大输出 token
ContextLength int `yaml:"context_length"` // 模型上下文长度
ThinkingBudget int `yaml:"thinking_budget"` // 思考模式 token 预算(0=默认)
APIKeyFile string `yaml:"api_key_file,omitempty"` // 外部 API Key 文件路径(可选)
}
LLMConfig LLM 配置
type QueryConfig ¶ added in v2.0.13
type QueryConfig struct {
SemanticWeight float32 `yaml:"semantic_weight"` // 语义检索权重
GraphWeight float32 `yaml:"graph_weight"` // 图检索权重
}
QueryConfig 查询配置
Directories
¶
| Path | Synopsis |
|---|---|
|
Package core 提供 goRAG 框架的基础类型与接口。
|
Package core 提供 goRAG 框架的基础类型与接口。 |
|
Package indexer 定义索引器的接口与实现。
|
Package indexer 定义索引器的接口与实现。 |
|
Package llm 提供基于 LLM 的文本增强工具。
|
Package llm 提供基于 LLM 的文本增强工具。 |
|
Package logging provides structured logging capabilities for the goRAG framework.
|
Package logging provides structured logging capabilities for the goRAG framework. |
|
Package result 提供检索结果的融合、去重、压缩与重排能力。
|
Package result 提供检索结果的融合、去重、压缩与重排能力。 |
|
store
|
|
|
Package view 提供基于 Cypher 的结构化视图查询能力。
|
Package view 提供基于 Cypher 的结构化视图查询能力。 |