测试修改
This commit is contained in:
@@ -6,7 +6,8 @@ RAG Core 配置管理模块
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import dotenv
|
||||||
|
dotenv.load_dotenv()
|
||||||
|
|
||||||
# ========== 辅助函数:类型转换 ==========
|
# ========== 辅助函数:类型转换 ==========
|
||||||
def _get_str(key: str) -> str | None:
|
def _get_str(key: str) -> str | None:
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ class LlamaCppEmbedder:
|
|||||||
self.base_url = LLAMACPP_EMBEDDING_URL
|
self.base_url = LLAMACPP_EMBEDDING_URL
|
||||||
self.api_key = LLAMACPP_API_KEY
|
self.api_key = LLAMACPP_API_KEY
|
||||||
self.model = model
|
self.model = model
|
||||||
|
print(f"初始化 base_url: { self.base_url}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def as_langchain_embeddings(self) -> Embeddings:
|
def as_langchain_embeddings(self) -> Embeddings:
|
||||||
"""创建 LangChain 兼容的嵌入实例。"""
|
"""创建 LangChain 兼容的嵌入实例。"""
|
||||||
@@ -41,13 +44,14 @@ class LlamaCppEmbedder:
|
|||||||
|
|
||||||
def _call_embedding_api(self, texts: List[str]) -> List[List[float]]:
|
def _call_embedding_api(self, texts: List[str]) -> List[List[float]]:
|
||||||
"""直接调用 llama.cpp 嵌入 API。"""
|
"""直接调用 llama.cpp 嵌入 API。"""
|
||||||
|
headers = {"Content-Type": "application/json"}
|
||||||
|
if self.api_key:
|
||||||
|
headers["Authorization"] = f"Bearer {self.api_key}"
|
||||||
|
|
||||||
base = self.base_url.rstrip("/")
|
base = self.base_url.rstrip("/")
|
||||||
if not base.endswith("/v1"):
|
if not base.endswith("/v1"):
|
||||||
base = base + "/v1"
|
base = base + "/v1"
|
||||||
|
|
||||||
headers = {"Content-Type": "application/json"}
|
|
||||||
if self.api_key:
|
|
||||||
headers["Authorization"] = f"Bearer {self.api_key}"
|
|
||||||
|
|
||||||
payload = {
|
payload = {
|
||||||
"input": texts,
|
"input": texts,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ import sys
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
sys.path.insert(0, str(Path(__file__).parent.parent / "backend"))
|
sys.path.insert(0, str(Path(__file__).parent.parent / "backend"))
|
||||||
|
|
||||||
from rag_core import (
|
from backend.rag_core import (
|
||||||
LlamaCppEmbedder,
|
LlamaCppEmbedder,
|
||||||
QdrantVectorStore,
|
QdrantVectorStore,
|
||||||
PostgresDocStore,
|
PostgresDocStore,
|
||||||
|
|||||||
@@ -94,7 +94,6 @@ class IndexBuilder:
|
|||||||
# 初始化向量存储
|
# 初始化向量存储
|
||||||
self.vector_store = QdrantVectorStore(
|
self.vector_store = QdrantVectorStore(
|
||||||
collection_name=config.collection_name,
|
collection_name=config.collection_name,
|
||||||
embeddings=self.embeddings,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# 根据切分类型初始化相关组件
|
# 根据切分类型初始化相关组件
|
||||||
|
|||||||
@@ -18,18 +18,14 @@ from dotenv import load_dotenv
|
|||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
# 添加项目根目录到路径
|
# 添加项目根目录到路径
|
||||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../.."))
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
|
||||||
|
from pydantic import SecretStr
|
||||||
|
from langchain_openai import ChatOpenAI
|
||||||
from rag_indexer.index_builder import IndexBuilderConfig
|
from rag_indexer.index_builder import IndexBuilderConfig
|
||||||
from rag_indexer.splitters import SplitterType
|
from rag_indexer.splitters import SplitterType
|
||||||
from .pipeline import RAGPipeline
|
from backend.app.rag.pipeline import RAGPipeline
|
||||||
from .tools import create_rag_tool_sync
|
from backend.app.rag.tools import create_rag_tool_sync
|
||||||
from pydantic import SecretStr
|
from backend.rag_core.retriever_factory import create_parent_retriever
|
||||||
# 使用本地 LLM(通过 OpenAI 兼容接口)
|
|
||||||
from langchain_openai import ChatOpenAI
|
|
||||||
from rag_core.retriever_factory import create_parent_retriever
|
|
||||||
|
|
||||||
load_dotenv()
|
|
||||||
|
|
||||||
def create_llm():
|
def create_llm():
|
||||||
"""创建本地 vLLM 服务 LLM"""
|
"""创建本地 vLLM 服务 LLM"""
|
||||||
@@ -113,7 +109,7 @@ async def demonstrate_tool_creation():
|
|||||||
collection_name="rag_documents",
|
collection_name="rag_documents",
|
||||||
splitter_type=SplitterType.PARENT_CHILD,
|
splitter_type=SplitterType.PARENT_CHILD,
|
||||||
)
|
)
|
||||||
retriever = retriever = create_parent_retriever(collection_name="rag_documents", search_k=5)
|
retriever = create_parent_retriever(collection_name="rag_documents", search_k=5)
|
||||||
|
|
||||||
# 2. 创建 LLM
|
# 2. 创建 LLM
|
||||||
llm = create_llm()
|
llm = create_llm()
|
||||||
@@ -41,41 +41,6 @@ async def test_index_builder():
|
|||||||
else:
|
else:
|
||||||
print(f"测试文件不存在: {test_file}")
|
print(f"测试文件不存在: {test_file}")
|
||||||
|
|
||||||
# 测试搜索功能
|
|
||||||
print("\n测试搜索功能...")
|
|
||||||
try:
|
|
||||||
results = builder.search("吕布", k=3)
|
|
||||||
print(f"搜索结果数量: {len(results)}")
|
|
||||||
for i, result in enumerate(results):
|
|
||||||
print(f"\n结果 {i+1}:")
|
|
||||||
print(f"内容: {result.page_content[:100]}...")
|
|
||||||
except Exception as e:
|
|
||||||
print(f"搜索测试失败: {e}")
|
|
||||||
|
|
||||||
# 测试带父块上下文的搜索
|
|
||||||
print("\n测试带父块上下文的搜索...")
|
|
||||||
try:
|
|
||||||
results = await builder.search_with_parent_context("吕布", k=3)
|
|
||||||
print(f"搜索结果数量: {len(results)}")
|
|
||||||
for i, result in enumerate(results):
|
|
||||||
print(f"\n结果 {i+1}:")
|
|
||||||
print(f"内容: {result.page_content[:100]}...")
|
|
||||||
except Exception as e:
|
|
||||||
print(f"带父块上下文的搜索测试失败: {e}")
|
|
||||||
|
|
||||||
# 测试统一检索接口
|
|
||||||
print("\n测试统一检索接口...")
|
|
||||||
try:
|
|
||||||
# 返回父块
|
|
||||||
results_parent = await builder.retrieve("吕布", return_parent=True)
|
|
||||||
print(f"返回父块的结果数量: {len(results_parent)}")
|
|
||||||
|
|
||||||
# 返回子块
|
|
||||||
results_child = await builder.retrieve("吕布", return_parent=False)
|
|
||||||
print(f"返回子块的结果数量: {len(results_child)}")
|
|
||||||
except Exception as e:
|
|
||||||
print(f"统一检索接口测试失败: {e}")
|
|
||||||
|
|
||||||
# 关闭资源
|
# 关闭资源
|
||||||
builder.close()
|
builder.close()
|
||||||
print("\n测试完成")
|
print("\n测试完成")
|
||||||
|
|||||||
Reference in New Issue
Block a user