LightRAG 是个开源的 RAG 框架,专门用来快速搭建模块化的检索增强生成管道。这个项目在 GitHub 上热度不低,我们今天来看看他到底怎么用
基础安装与环境配置
LightRAG 的安装过程很简单,几行命令就能搞定:
pip install "lightrag-hku[api]" cp env.example .env # --->这个有很多参数 非常丰富 lightrag-server
官方提供的 UI 界面做得还算不错,不过测试时基本没用上,因为更关注的是代码层面的实现。
环境搭好之后,可以先跑一下官方提供的示例代码(摘自 readme):
import os
import asyncio
from lightrag import LightRAG, QueryParam
from lightrag.llm.openai import gpt_4o_mini_complete, gpt_4o_complete, openai_embed
from lightrag.kg.shared_storage import initialize_pipeline_status
from lightrag.utils import setup_logger
setup_logger("lightrag", level="INFO")
WORKING_DIR = "./rag_storage" if not os.path.exists(WORKING_DIR):
os.mkdir(WORKING_DIR)
async def initialize_rag():
rag = LightRAG(
working_dir=WORKING_DIR,
embedding_func=openai_embed,
llm_model_func=gpt_4o_mini_complete,
)
# IMPORTANT: Both initialization calls are required!
await rag.initialize_storages() # Initialize storage backends
await initialize_pipeline_status() # Initialize processing pipeline
return rag
async def main():
try:
# Initialize RAG instance
rag = await initialize_rag()
await rag.ainsert("Your text")
# Perform hybrid search
mode = "hybrid"
print(
await rag.aquery(
"What are the top themes in this story?",
param=QueryParam(mode=mode)
)
)
except Exception as e:
print(f"An error occurred: {e}")
finally:
if rag:
await rag.finalize_storages()
if __name__ == "__main__":
asyncio.run(main())
官方示例里还有个基于 Gemini 的版本,看着比较简单就选了这个来测试:
# pip install -q -U google-genai to use gemini as a client import os
import numpy as np
from google import genai
from google.genai import types
from dotenv import load_dotenv
from lightrag.utils import EmbeddingFunc
from lightrag import LightRAG, QueryParam
from sentence_transformers import SentenceTransformer
from lightrag.kg.shared_storage import initialize_pipeline_status
import asyncio
import nest_asyncio
# Apply nest_asyncio to solve event loop issuesnest_asyncio.apply()
load_dotenv()
gemini_api_key = os.getenv("GEMINI_API_KEY")
WORKING_DIR = "./dickens" if os.path.exists(WORKING_DIR):
import shutil
shutil.rmtree(WORKING_DIR)
os.mkdir(WORKING_DIR)
async def llm_model_func(
prompt, system_prompt=None, history_messages=[], keyword_extraction=False, **kwargs
) -> str:
# 1. Initialize the GenAI Client with your Gemini API Key
client = genai.Client(api_key=gemini_api_key)
# 2. Combine prompts: system prompt, history, and user prompt
if history_messages is None:
history_messages = []
combined_prompt = ""
if system_prompt:
combined_prompt += f"{system_prompt}\n"
for msg in history_messages:
# Each msg is expected to be a dict: {"role": "...", "content": "..."}
combined_prompt += f"{msg['role']}: {msg['content']}\n"
# Finally, add the new user prompt
combined_prompt += f"user: {prompt}"
# 3. Call the Gemini model
response = client.models.generate_content(
model="gemini-1.5-flash",
contents=[combined_prompt],
config=types.GenerateContentConfig(max_output_tokens=500, temperature=0.1),
)
# 4. Return the response text
return response.text
async def embedding_func(texts: list[str]) -> np.ndarray:
model = SentenceTransformer("all-MiniLM-L6-v2")
embeddings = model.encode(texts, convert_to_numpy=True)
return embeddings
async def initialize_rag():
rag = LightRAG(
working_dir=WORKING_DIR,
llm_model_func=llm_model_func,
embedding_func=EmbeddingFunc(
embedding_dim=384,
max_token_size=8192,
func=embedding_func,
),
)
await rag.initialize_storages()
await initialize_pipeline_status()
return rag
def main():
# Initialize RAG instance
rag = asyncio.run(initialize_rag())
file_path = "story.txt"
with open(file_path, "r") as file:
text = file.read()
rag.insert(text)
response = rag.query(
query="What is the main theme of the story?",
param=QueryParam(mode="hybrid", top_k=5, response_type="single line"),
)
print(response)
if __name__ == "__main__":
main()
.env
配置文件的参数非常丰富,需要根据实际使用的工具链做适配。为了调用本地模型,我这里用Ollama 做了相应调整。
### This is sample file of .env############################## Server Configuration###########################HOST=0.0.0.0 PORT=9621 WEBUI_TITLE='My Graph KB' WEBUI_DESCRIPTION="Simple and Fast Graph Based RAG System"# WORKERS=2### gunicorn worker timeout(as default LLM request timeout if LLM_TIMEOUT is not set)# TIMEOUT=150# CORS_ORIGINS=http://localhost:3000,http://localhost:8080### Optional SSL Configuration# SSL=true# SSL_CERTFILE=/path/to/cert.pem# SSL_KEYFILE=/path/to/key.pem### Directory Configuration (defaults to current working directory)### Default value is ./inputs and ./rag_storage# INPUT_DIR=# WORKING_DIR= ### Tiktoken cache directory (Store cached files in this folder for offline deployment)# TIKTOKEN_CACHE_DIR=/app/data/tiktoken### Ollama Emulating Model and Tag# OLLAMA_EMULATING_MODEL_NAME=lightragOLLAMA_EMULATING_MODEL_TAG=latest### Max nodes return from graph retrieval in webui# MAX_GRAPH_NODES=1000### Logging level# LOG_LEVEL=INFO# VERBOSE=False# LOG_MAX_BYTES=10485760# LOG_BACKUP_COUNT=5### Logfile location (defaults to current working directory)# LOG_DIR=/path/to/log/directory######################################## Login and API-Key Configuration###################################### AUTH_ACCOUNTS='admin:admin123,user1:pass456'# TOKEN_SECRET=Your-Key-For-LightRAG-API-Server# TOKEN_EXPIRE_HOURS=48# GUEST_TOKEN_EXPIRE_HOURS=24# JWT_ALGORITHM=HS256### API-Key to access LightRAG Server API# LIGHTRAG_API_KEY=your-secure-api-key-here# WHITELIST_PATHS=/health,/api/*######################################################################################### Query Configuration###### How to control the context length sent to LLM:### MAX_ENTITY_TOKENS + MAX_RELATION_TOKENS < MAX_TOTAL_TOKENS### Chunk_Tokens = MAX_TOTAL_TOKENS - Actual_Entity_Tokens - Actual_Relation_Tokens####################################################################################### LLM response cache for query (Not valid for streaming response)ENABLE_LLM_CACHE=true# COSINE_THRESHOLD=0.2### Number of entities or relations retrieved from KG# TOP_K=40### Maximum number or chunks for naive vector search# CHUNK_TOP_K=20### control the actual entities send to LLM# MAX_ENTITY_TOKENS=6000### control the actual relations send to LLM# MAX_RELATION_TOKENS=8000### control the maximum tokens send to LLM (include entities, relations and chunks)# MAX_TOTAL_TOKENS=30000### chunk selection strategies### VECTOR: Pick KG chunks by vector similarity, delivered chunks to the LLM aligning more closely with naive retrieval### WEIGHT: Pick KG chunks by entity and chunk weight, delivered more solely KG related chunks to the LLM### If reranking is enabled, the impact of chunk selection strategies will be diminished.# KG_CHUNK_PICK_METHOD=VECTOR############################################################ Reranking configuration### RERANK_BINDING type: null, cohere, jina, aliyun### For rerank model deployed by vLLM use cohere binding#########################################################RERANK_BINDING=null### Enable rerank by default in query params when RERANK_BINDING is not null# RERANK_BY_DEFAULT=True### rerank score chunk filter(set to 0.0 to keep all chunks, 0.6 or above if LLM is not strong enough)# MIN_RERANK_SCORE=0.0### For local deployment with vLLM# RERANK_MODEL=BAAI/bge-reranker-v2-m3# RERANK_BINDING_HOST=http://localhost:8000/v1/rerank# RERANK_BINDING_API_KEY=your_rerank_api_key_here### Default value for Cohere AI# RERANK_MODEL=rerank-v3.5# RERANK_BINDING_HOST=https://api.cohere.com/v2/rerank# RERANK_BINDING_API_KEY=your_rerank_api_key_here### Default value for Jina AI# RERANK_MODEL=jina-reranker-v2-base-multilingual# RERANK_BINDING_HOST=https://api.jina.ai/v1/rerank# RERANK_BINDING_API_KEY=your_rerank_api_key_here### Default value for Aliyun# RERANK_MODEL=gte-rerank-v2# RERANK_BINDING_HOST=https://dashscope.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank# RERANK_BINDING_API_KEY=your_rerank_api_key_here########################################### Document processing configuration########################################ENABLE_LLM_CACHE_FOR_EXTRACT=true### Document processing output language: English, Chinese, French, German ...SUMMARY_LANGUAGE=English### Entity types that the LLM will attempt to recognize# ENTITY_TYPES='["Person", "Creature", "Organization", "Location", "Event", "Concept", "Method", "Content", "Data", "Artifact", "NaturalObject"]'### Chunk size for document splitting, 500~1500 is recommended# CHUNK_SIZE=1200# CHUNK_OVERLAP_SIZE=100### Number of summary segments or tokens to trigger LLM summary on entity/relation merge (at least 3 is recommended)# FORCE_LLM_SUMMARY_ON_MERGE=8### Max description token size to trigger LLM summary# SUMMARY_MAX_TOKENS = 1200### Recommended LLM summary output length in tokens# SUMMARY_LENGTH_RECOMMENDED_=600### Maximum context size sent to LLM for description summary# SUMMARY_CONTEXT_SIZE=12000### control the maximum chunk_ids stored in vector and graph db# MAX_SOURCE_IDS_PER_ENTITY=300# MAX_SOURCE_IDS_PER_RELATION=300### control chunk_ids limitation method: FIFO, KEEP### FIFO: First in first out### KEEP: Keep oldest (less merge action and faster)# SOURCE_IDS_LIMIT_METHOD=FIFO# Maximum number of file paths stored in entity/relation file_path field (For displayed only, does not affect query performance)# MAX_FILE_PATHS=100### maximum number of related chunks per source entity or relation### The chunk picker uses this value to determine the total number of chunks selected from KG(knowledge graph)### Higher values increase re-ranking time# RELATED_CHUNK_NUMBER=5################################## Concurrency Configuration################################## Max concurrency requests of LLM (for both query and document processing)MAX_ASYNC=4### Number of parallel processing documents(between 2~10, MAX_ASYNC/3 is recommended)MAX_PARALLEL_INSERT=2### Max concurrency requests for Embedding# EMBEDDING_FUNC_MAX_ASYNC=8### Num of chunks send to Embedding in single request# EMBEDDING_BATCH_NUM=10############################################################## LLM Configuration### LLM_BINDING type: openai, ollama, lollms, azure_openai, aws_bedrock############################################################## LLM request timeout setting for all llm (0 means no timeout for Ollma)# LLM_TIMEOUT=180LLM_BINDING=ollama LLM_MODEL=granite4:latest LLM_BINDING_HOST=http://localhost:11434[#LLM](#LLM)_BINDING_API_KEY=your_api_key### Optional for Azure# AZURE_OPENAI_API_VERSION=2024-08-01-preview# AZURE_OPENAI_DEPLOYMENT=gpt-4o### Openrouter example# LLM_MODEL=google/gemini-2.5-flash# LLM_BINDING_HOST=https://openrouter.ai/api/v1# LLM_BINDING_API_KEY=your_api_key# LLM_BINDING=openai### OpenAI Compatible API Specific Parameters### Increased temperature values may mitigate infinite inference loops in certain LLM, such as Qwen3-30B.# OPENAI_LLM_TEMPERATURE=0.9### Set the max_tokens to mitigate endless output of some LLM (less than LLM_TIMEOUT * llm_output_tokens/second, i.e. 9000 = 180s * 50 tokens/s)### Typically, max_tokens does not include prompt content, though some models, such as Gemini Models, are exceptions### For vLLM/SGLang deployed models, or most of OpenAI compatible API provider# OPENAI_LLM_MAX_TOKENS=9000### For OpenAI o1-mini or newer modles[#OPENAI](#OPENAI)_LLM_MAX_COMPLETION_TOKENS=9000#### OpenAI's new API utilizes max_completion_tokens instead of max_tokens# OPENAI_LLM_MAX_COMPLETION_TOKENS=9000### use the following command to see all support options for OpenAI, azure_openai or OpenRouter### lightrag-server --llm-binding openai --help### OpenAI Specific Parameters# OPENAI_LLM_REASONING_EFFORT=minimal### OpenRouter Specific Parameters# OPENAI_LLM_EXTRA_BODY='{"reasoning": {"enabled": false}}'### Qwen3 Specific Parameters deploy by vLLM# OPENAI_LLM_EXTRA_BODY='{"chat_template_kwargs": {"enable_thinking": false}}'### use the following command to see all support options for Ollama LLM### If LightRAG deployed in Docker uses host.docker.internal instead of localhost in LLM_BINDING_HOST### lightrag-server --llm-binding ollama --help### Ollama Server Specific Parameters### OLLAMA_LLM_NUM_CTX must be provided, and should at least larger than MAX_TOTAL_TOKENS + 2000OLLAMA_LLM_NUM_CTX=32768### Set the max_output_tokens to mitigate endless output of some LLM (less than LLM_TIMEOUT * llm_output_tokens/second, i.e. 9000 = 180s * 50 tokens/s)# OLLAMA_LLM_NUM_PREDICT=9000### Stop sequences for Ollama LLM# OLLAMA_LLM_STOP='["", "<|EOT|>"]'### Bedrock Specific Parameters# BEDROCK_LLM_TEMPERATURE=1.0####################################################################################### Embedding Configuration (Should not be changed after the first file processed)### EMBEDDING_BINDING: ollama, openai, azure_openai, jina, lollms, aws_bedrock##################################################################################### EMBEDDING_TIMEOUT=30EMBEDDING_BINDING=ollama EMBEDDING_MODEL=granite-embedding:latest EMBEDDING_DIM=1024 EMBEDDING_BINDING_API_KEY=your_api_key# If LightRAG deployed in Docker uses host.docker.internal instead of localhostEMBEDDING_BINDING_HOST=http://localhost:11434### OpenAI compatible (VoyageAI embedding openai compatible)# EMBEDDING_BINDING=openai# EMBEDDING_MODEL=text-embedding-3-large# EMBEDDING_DIM=3072# EMBEDDING_BINDING_HOST=https://api.openai.com/v1# EMBEDDING_BINDING_API_KEY=your_api_key### Optional for Azure# AZURE_EMBEDDING_DEPLOYMENT=text-embedding-3-large# AZURE_EMBEDDING_API_VERSION=2023-05-15# AZURE_EMBEDDING_ENDPOINT=your_endpoint# AZURE_EMBEDDING_API_KEY=your_api_key### Jina AI Embedding# EMBEDDING_BINDING=jina# EMBEDDING_BINDING_HOST=https://api.jina.ai/v1/embeddings# EMBEDDING_MODEL=jina-embeddings-v4# EMBEDDING_DIM=2048# EMBEDDING_BINDING_API_KEY=your_api_key### Optional for Ollama embeddingOLLAMA_EMBEDDING_NUM_CTX=8192### use the following command to see all support options for Ollama embedding### lightrag-server --embedding-binding ollama --help####################################################################### WORKSPACE sets workspace name for all storage types### for the purpose of isolating data from LightRAG instances.### Valid workspace name constraints: a-z, A-Z, 0-9, and _##################################################################### WORKSPACE=space1############################### Data storage selection############################### Default storage (Recommended for small scale deployment)# LIGHTRAG_KV_STORAGE=JsonKVStorage# LIGHTRAG_DOC_STATUS_STORAGE=JsonDocStatusStorage# LIGHTRAG_GRAPH_STORAGE=NetworkXStorage# LIGHTRAG_VECTOR_STORAGE=NanoVectorDBStorage### Redis Storage (Recommended for production deployment)# LIGHTRAG_KV_STORAGE=RedisKVStorage# LIGHTRAG_DOC_STATUS_STORAGE=RedisDocStatusStorage### Vector Storage (Recommended for production deployment)# LIGHTRAG_VECTOR_STORAGE=MilvusVectorDBStorage# LIGHTRAG_VECTOR_STORAGE=QdrantVectorDBStorage# LIGHTRAG_VECTOR_STORAGE=FaissVectorDBStorage### Graph Storage (Recommended for production deployment)# LIGHTRAG_GRAPH_STORAGE=Neo4JStorage# LIGHTRAG_GRAPH_STORAGE=MemgraphStorage### PostgreSQL# LIGHTRAG_KV_STORAGE=PGKVStorage# LIGHTRAG_DOC_STATUS_STORAGE=PGDocStatusStorage# LIGHTRAG_GRAPH_STORAGE=PGGraphStorage# LIGHTRAG_VECTOR_STORAGE=PGVectorStorage### MongoDB (Vector storage only available on Atlas Cloud)# LIGHTRAG_KV_STORAGE=MongoKVStorage# LIGHTRAG_DOC_STATUS_STORAGE=MongoDocStatusStorage# LIGHTRAG_GRAPH_STORAGE=MongoGraphStorage# LIGHTRAG_VECTOR_STORAGE=MongoVectorDBStorage### PostgreSQL ConfigurationPOSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_USER=your_username POSTGRES_PASSWORD='your_password' POSTGRES_DATABASE=your_database POSTGRES_MAX_CONNECTIONS=12# POSTGRES_WORKSPACE=forced_workspace_name### PostgreSQL Vector Storage Configuration### Vector storage type: HNSW, IVFFlatPOSTGRES_VECTOR_INDEX_TYPE=HNSW POSTGRES_HNSW_M=16 POSTGRES_HNSW_EF=200 POSTGRES_IVFFLAT_LISTS=100### PostgreSQL Connection Retry Configuration (Network Robustness)### Number of retry attempts (1-10, default: 3)### Initial retry backoff in seconds (0.1-5.0, default: 0.5)### Maximum retry backoff in seconds (backoff-60.0, default: 5.0)### Connection pool close timeout in seconds (1.0-30.0, default: 5.0)# POSTGRES_CONNECTION_RETRIES=3# POSTGRES_CONNECTION_RETRY_BACKOFF=0.5# POSTGRES_CONNECTION_RETRY_BACKOFF_MAX=5.0# POSTGRES_POOL_CLOSE_TIMEOUT=5.0### PostgreSQL SSL Configuration (Optional)# POSTGRES_SSL_MODE=require# POSTGRES_SSL_CERT=/path/to/client-cert.pem# POSTGRES_SSL_KEY=/path/to/client-key.pem# POSTGRES_SSL_ROOT_CERT=/path/to/ca-cert.pem# POSTGRES_SSL_CRL=/path/to/crl.pem### PostgreSQL Server Settings (for Supabase Supavisor)# Use this to pass extra options to the PostgreSQL connection string.# For Supabase, you might need to set it like this:# POSTGRES_SERVER_SETTINGS="options=reference%3D[project-ref]"# Default is 100 set to 0 to disable# POSTGRES_STATEMENT_CACHE_SIZE=100### Neo4j ConfigurationNEO4J_URI=neo4j+s://xxxxxxxx.databases.neo4j.io NEO4J_USERNAME=neo4j NEO4J_PASSWORD='your_password' NEO4J_DATABASE=neo4j NEO4J_MAX_CONNECTION_POOL_SIZE=100 NEO4J_CONNECTION_TIMEOUT=30 NEO4J_CONNECTION_ACQUISITION_TIMEOUT=30 NEO4J_MAX_TRANSACTION_RETRY_TIME=30 NEO4J_MAX_CONNECTION_LIFETIME=300 NEO4J_LIVENESS_CHECK_TIMEOUT=30 NEO4J_KEEP_ALIVE=true# NEO4J_WORKSPACE=forced_workspace_name### MongoDB ConfigurationMONGO_URI=mongodb://root:root@localhost:27017/[#MONGO](#MONGO)_URI=mongodb+srv://xxxxMONGO_DATABASE=LightRAG# MONGODB_WORKSPACE=forced_workspace_name### Milvus ConfigurationMILVUS_URI=http://localhost:19530 MILVUS_DB_NAME=lightrag# MILVUS_USER=root# MILVUS_PASSWORD=your_password# MILVUS_TOKEN=your_token# MILVUS_WORKSPACE=forced_workspace_name### QdrantQDRANT_URL=http://localhost:6333# QDRANT_API_KEY=your-api-key# QDRANT_WORKSPACE=forced_workspace_name### RedisREDIS_URI=redis://localhost:6379 REDIS_SOCKET_TIMEOUT=30 REDIS_CONNECT_TIMEOUT=10 REDIS_MAX_CONNECTIONS=100 REDIS_RETRY_ATTEMPTS=3# REDIS_WORKSPACE=forced_workspace_name### Memgraph ConfigurationMEMGRAPH_URI=bolt://localhost:7687 MEMGRAPH_USERNAME= MEMGRAPH_PASSWORD= MEMGRAPH_DATABASE=memgraph # MEMGRAPH_WORKSPACE=forced_workspace_name
参考前面的 Gemini 示例,写了下面的代码包含了一些硬编码文本的测试代码:
# 准备环境 python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install "lightrag-hku[api]" pip install ollama
import os
import asyncio
from functools import partial
from datetime import datetime
from lightrag import LightRAG, QueryParam
try:
from ollama import AsyncClient
except ImportError:
print("Warning: The 'ollama' Python package is required. Please run: pip install ollama")
class AsyncClient:
def __init__(self, host): pass
async def chat(self, **kwargs): raise NotImplementedError("ollama package not installed.")
from lightrag.llm.ollama import ollama_embed
from lightrag.utils import setup_logger, EmbeddingFunc
from lightrag.kg.shared_storage import initialize_pipeline_status
OLLAMA_BASE_URL = "http://localhost:11434" LLM_MODEL = "granite4:latest" EMBEDDING_MODEL = "granite-embedding:latest" WORKING_DIR = "./rag_storage_ollama" EMBEDDING_DIMENSION = 384 OUTPUT_DIR = "./output" setup_logger("lightrag", level="INFO")
if not os.path.exists(WORKING_DIR):
os.mkdir(WORKING_DIR)
if not os.path.exists(OUTPUT_DIR):
os.mkdir(OUTPUT_DIR)
async def custom_ollama_llm_complete(prompt: str, system_prompt: str = None, **kwargs):
"""
A custom function that handles the Ollama client initialization and model/base_url
parameters that are injected via functools.partial, while robustly filtering out
unwanted internal keywords.
"""
model = kwargs.pop('model')
base_url = kwargs.pop('base_url')
client = AsyncClient(host=base_url)
messages = []
if system_prompt:
messages.append({"role": "system", "content": system_prompt})
messages.append({"role": "user", "content": prompt})
keys_to_filter = {
'host',
'hashing_kv',
'llm_model_name',
'history_messages',
'keyword_extraction',
'enable_cot',
'is_system_prompt_only',
'prompt_config'
}
cleaned_kwargs = {k: v for k, v in kwargs.items() if k not in keys_to_filter}
try:
response = await client.chat(
model=model,
messages=messages,
**cleaned_kwargs
)
return response['message']['content']
except Exception as e:
raise e
async def initialize_rag():
"""Initializes the LightRAG instance using standard Ollama configuration."""
configured_ollama_complete = partial(
custom_ollama_llm_complete,
model=LLM_MODEL,
base_url=OLLAMA_BASE_URL,
)
configured_ollama_embed = partial(
ollama_embed,
embed_model=EMBEDDING_MODEL,
base_url=OLLAMA_BASE_URL
)
wrapped_embedding_func = EmbeddingFunc(
embedding_dim=EMBEDDING_DIMENSION,
func=configured_ollama_embed,
)
rag = LightRAG(
working_dir=WORKING_DIR,
llm_model_func=configured_ollama_complete,
embedding_func=wrapped_embedding_func,
)
await rag.initialize_storages()
await initialize_pipeline_status()
return rag
async def main():
rag = None
query = "How does RAG solve the problem of LLM hallucination and what are its main use cases?"
try:
print("Checking if required Ollama models are pulled...")
# the knowledge source
sample_text = """
The concept of Retrieval-Augmented Generation (RAG) is a critical development
in the field of large language models (LLMs). It addresses the 'hallucination'
problem by grounding LLM responses in external, verified knowledge sources.
Instead of relying solely on the LLM's static training data, RAG first retrieves
relevant documents from a knowledge base (often a vector store) and then feeds
these documents, alongside the user's query, to the LLM for generation.
This two-step process significantly improves the accuracy, relevance, and
transparency of the generated output. Popular applications include enterprise
search, customer support, and domain-specific QA systems.
"""
print(f"--- 1. Initializing RAG with Ollama Models ---")
rag = await initialize_rag()
print(f"\n--- 2. Inserting Sample Text ({len(sample_text.split())} words) ---")
await rag.ainsert(sample_text)
print("Insertion complete. Data is ready for retrieval.")
mode = "hybrid"
print(f"\n--- 3. Querying the RAG System (Mode: {mode}) ---")
print(f"Query: '{query}'")
rag_result = await rag.aquery(
query,
param=QueryParam(mode=mode)
)
response_text = None
if hasattr(rag_result, 'get_response_text'):
response_text = rag_result.get_response_text()
elif isinstance(rag_result, str):
response_text = rag_result
print("\n" + "="*50)
print("FINAL RAG RESPONSE")
print("="*50)
output_content = "" # Prepare string for file output
if response_text and not str(response_text).strip().startswith("Error:"):
print(response_text)
output_content += f"# RAG Query Result\n\n"
output_content += f"## Query\n\n> {query}\n\n"
output_content += f"## LLM/Cache Response\n\n{response_text}\n\n"
print("\n" + "="*50)
print("\n--- Context Retrieved (Sources) ---")
output_content += f"## Retrieved Context (Sources)\n\n"
if not isinstance(rag_result, str) and rag_result.retriever_output and rag_result.retriever_output.docs:
for i, doc in enumerate(rag_result.retriever_output.docs):
source_text = doc.text
print(f"Source {i+1}: {source_text[:100]}...")
output_content += f"### Source {i+1}\n\n"
output_content += f"```text\n{source_text}\n```\n"
else:
print("No context documents were retrieved (or result was a cache hit string).")
output_content += "No context documents were retrieved (or result was a cache hit string).\n"
else:
error_message = "LLM failed to generate a response (Check Ollama logs for details)."
print(error_message)
output_content += f"# RAG Query Result\n\n## Error\n\n{error_message}\n\n"
if response_text:
print(f"\nError String from LightRAG: {response_text}")
output_content += f"**Error Detail:** {response_text}\n"
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"rag_query_output_{timestamp}.md"
output_filepath = os.path.join(OUTPUT_DIR, filename)
with open(output_filepath, 'w', encoding='utf-8') as f:
f.write(output_content)
print(f"\n--- Output Written to File ---")
print(f"Successfully wrote output to: {output_filepath}")
except Exception as e:
if "'str' object has no attribute 'retriever_output'" in str(e):
print("\n--- ERROR BYPASS: Detected Cache Hit String Result ---")
print("The response was successfully retrieved from the cache and written to the output file.")
else:
# For all other (real) exceptions, print the detailed error block
print("\n" + "="*50)
print("AN ERROR OCCURRED DURING RAG PROCESS")
print("="*50)
print(f"Error: {e}")
print(f"Please ensure Ollama is running and accessible at {OLLAMA_BASE_URL}, and the models '{LLM_MODEL}' and '{EMBEDDING_MODEL}' are pulled locally.")
print(f"To pull: 'ollama pull {LLM_MODEL}' and 'ollama pull {EMBEDDING_MODEL}'")
print("="*50 + "\n")
finally:
if rag:
print("\n--- Finalizing storages ---")
await rag.finalize_storages()
if __name__ == "__main__":
asyncio.run(main())
虽然
.env
文件里有参数可以配置 input 文件夹路径,但测试时直接在代码里写死了路径。
运行后的输出包括控制台日志和 markdown 格式的结果文件,结果太长我就不贴了。
接下来测试了更实际的场景:准备了几份 markdown 格式的文档(其他格式应该也支持,但没测),用这些文档构建了自己的 RAG 系统,继续用 Ollama 和 Granite 模型来验证效果,这次的代码就没那么硬编码了。
.env文件提供了 input 文件夹的配置选项,不过这里还是用的硬编码方式
import osimport asynciofrom functools import partialfrom datetime import datetimefrom lightrag import LightRAG, QueryParamimport glob
try: from ollama import AsyncClientexcept ImportError: print("Warning: The 'ollama' Python package is required. Please run: pip install ollama") class AsyncClient:
def __init__(self, host): pass
async def chat(self, **kwargs): raise NotImplementedError("ollama package not installed.")from lightrag.llm.ollama import ollama_embed
from lightrag.utils import setup_logger, EmbeddingFuncfrom lightrag.kg.shared_storage import initialize_pipeline_status
OLLAMA_BASE_URL = "http://localhost:11434"LLM_MODEL = "granite4:latest"EMBEDDING_MODEL = "granite-embedding:latest"WORKING_DIR = "./rag_storage_ollama"EMBEDDING_DIMENSION = 384 DOCUMENTS_DIR = "./documents" # Directory to read source files from
https://zq.zhaopin.com/moment/72398990
https://zq.zhaopin.com/moment/72398991
https://zq.zhaopin.com/moment/72399001
https://zq.zhaopin.com/moment/72398993
https://zq.zhaopin.com/moment/72399007
https://zq.zhaopin.com/moment/72399069
https://zq.zhaopin.com/moment/72399073
https://zq.zhaopin.com/moment/72399075
https://zq.zhaopin.com/moment/72399078
https://zq.zhaopin.com/moment/72399092
https://zq.zhaopin.com/moment/72399227
https://zq.zhaopin.com/moment/72399140
https://zq.zhaopin.com/moment/72399145
https://zq.zhaopin.com/moment/72399223
https://zq.zhaopin.com/moment/72399147
https://zq.zhaopin.com/moment/72399160
https://zq.zhaopin.com/moment/72399228
https://zq.zhaopin.com/moment/72399229
https://zq.zhaopin.com/moment/72399255
https://zq.zhaopin.com/moment/72399320
https://zq.zhaopin.com/moment/72399322
https://zq.zhaopin.com/moment/72399330
https://zq.zhaopin.com/moment/72399504
https://zq.zhaopin.com/moment/72399340
https://zq.zhaopin.com/moment/72399373
https://zq.zhaopin.com/moment/72399472
https://zq.zhaopin.com/moment/72399485
https://zq.zhaopin.com/moment/72399497
https://zq.zhaopin.com/moment/72399705
https://zq.zhaopin.com/moment/72399557
https://zq.zhaopin.com/moment/72399728
https://zq.zhaopin.com/moment/72399743
https://zq.zhaopin.com/moment/72399790
https://zq.zhaopin.com/moment/72399740
https://zq.zhaopin.com/moment/72399943
https://zq.zhaopin.com/moment/72399961
https://zq.zhaopin.com/moment/72399972
https://zq.zhaopin.com/moment/72399979
https://zq.zhaopin.com/moment/72400017
https://zq.zhaopin.com/moment/72400169
https://zq.zhaopin.com/moment/72400157
https://zq.zhaopin.com/moment/72400196
https://zq.zhaopin.com/moment/72400187
https://zq.zhaopin.com/moment/72400232
https://zq.zhaopin.com/moment/72400377
https://zq.zhaopin.com/moment/72400380
https://zq.zhaopin.com/moment/72400417
https://zq.zhaopin.com/moment/72400489
https://zq.zhaopin.com/moment/72400767
https://zq.zhaopin.com/moment/72400798
https://zq.zhaopin.com/moment/72400769
https://zq.zhaopin.com/moment/72400889
https://zq.zhaopin.com/moment/72400790
https://zq.zhaopin.com/moment/72401175
https://zq.zhaopin.com/moment/72401184
https://zq.zhaopin.com/moment/72401300
https://zq.zhaopin.com/moment/72401235
https://zq.zhaopin.com/moment/72401246
https://zq.zhaopin.com/moment/72401563
https://zq.zhaopin.com/moment/72401655
https://zq.zhaopin.com/moment/72401567
https://zq.zhaopin.com/moment/72401638
https://zq.zhaopin.com/moment/72401698
https://zq.zhaopin.com/moment/72401955
https://zq.zhaopin.com/moment/72401956
https://zq.zhaopin.com/moment/72402012
https://zq.zhaopin.com/moment/72402010
https://zq.zhaopin.com/moment/72402120
https://zq.zhaopin.com/moment/72402352
https://zq.zhaopin.com/moment/72402351
https://zq.zhaopin.com/moment/72402365
https://zq.zhaopin.com/moment/72402362
https://zq.zhaopin.com/moment/72402451
https://zq.zhaopin.com/moment/72402658
https://zq.zhaopin.com/moment/72402667
https://zq.zhaopin.com/moment/72402697
https://zq.zhaopin.com/moment/72402937
https://zq.zhaopin.com/moment/72402698
https://zq.zhaopin.com/moment/72402729
https://zq.zhaopin.com/moment/72402949
https://zq.zhaopin.com/moment/72402992
https://zq.zhaopin.com/moment/72402991
https://zq.zhaopin.com/moment/72403029
https://zq.zhaopin.com/moment/72403189
https://zq.zhaopin.com/moment/72403200
https://zq.zhaopin.com/moment/72403285
https://zq.zhaopin.com/moment/72403284
https://zq.zhaopin.com/moment/72403300
https://zq.zhaopin.com/moment/72403529
https://zq.zhaopin.com/moment/72403451
https://zq.zhaopin.com/moment/72403459
https://zq.zhaopin.com/moment/72403522
https://zq.zhaopin.com/moment/72403560
https://zq.zhaopin.com/moment/72403691
https://zq.zhaopin.com/moment/72403693
https://zq.zhaopin.com/moment/72403735
https://zq.zhaopin.com/moment/72403732
https://zq.zhaopin.com/moment/72403787
https://zq.zhaopin.com/moment/72403913
https://zq.zhaopin.com/moment/72403914
https://zq.zhaopin.com/moment/72403945
https://zq.zhaopin.com/moment/72403947
https://zq.zhaopin.com/moment/72404013
https://zq.zhaopin.com/moment/72404170
https://zq.zhaopin.com/moment/72404151
https://zq.zhaopin.com/moment/72404347
https://zq.zhaopin.com/moment/72404206
https://zq.zhaopin.com/moment/72404187
https://zq.zhaopin.com/moment/72404410
https://zq.zhaopin.com/moment/72404414
https://zq.zhaopin.com/moment/72404406
https://zq.zhaopin.com/moment/72404565
https://zq.zhaopin.com/moment/72404430
https://zq.zhaopin.com/moment/72404635
https://zq.zhaopin.com/moment/72404645
https://zq.zhaopin.com/moment/72404663
https://zq.zhaopin.com/moment/72404779
https://zq.zhaopin.com/moment/72404861
https://zq.zhaopin.com/moment/72404863
https://zq.zhaopin.com/moment/72404879
https://zq.zhaopin.com/moment/72405002
https://zq.zhaopin.com/moment/72405107
https://zq.zhaopin.com/moment/72405047
https://zq.zhaopin.com/moment/72405039
https://zq.zhaopin.com/moment/72405027
https://zq.zhaopin.com/moment/72405249
https://zq.zhaopin.com/moment/72405257
https://zq.zhaopin.com/moment/72405295
https://zq.zhaopin.com/moment/72405255
https://zq.zhaopin.com/moment/72405703
https://zq.zhaopin.com/moment/72405458
https://zq.zhaopin.com/moment/72405483
https://zq.zhaopin.com/moment/72405487
https://zq.zhaopin.com/moment/72405486
https://zq.zhaopin.com/moment/72405502
https://zq.zhaopin.com/moment/72405686
https://zq.zhaopin.com/moment/72405701
https://zq.zhaopin.com/moment/72405711
https://zq.zhaopin.com/moment/72405875
https://zq.zhaopin.com/moment/72405918
https://zq.zhaopin.com/moment/72405922
https://zq.zhaopin.com/moment/72405924
https://zq.zhaopin.com/moment/72405934
https://zq.zhaopin.com/moment/72406077
https://zq.zhaopin.com/moment/72406144
https://zq.zhaopin.com/moment/72406157
https://zq.zhaopin.com/moment/72406161
https://zq.zhaopin.com/moment/72406171
https://zq.zhaopin.com/moment/72406347
https://zq.zhaopin.com/moment/72406315
https://zq.zhaopin.com/moment/72406362
https://zq.zhaopin.com/moment/72406548
https://zq.zhaopin.com/moment/72406380
https://zq.zhaopin.com/moment/72406413
https://zq.zhaopin.com/moment/72406565
https://zq.zhaopin.com/moment/72406571
https://zq.zhaopin.com/moment/72406585
https://zq.zhaopin.com/moment/72406631
https://zq.zhaopin.com/moment/72407030
https://zq.zhaopin.com/moment/72406795
https://zq.zhaopin.com/moment/72406818
https://zq.zhaopin.com/moment/72406797
https://zq.zhaopin.com/moment/72406841
https://zq.zhaopin.com/moment/72407008
https://zq.zhaopin.com/moment/72407028
https://zq.zhaopin.com/moment/72407042
https://zq.zhaopin.com/moment/72407061
https://zq.zhaopin.com/moment/72407124
https://zq.zhaopin.com/moment/72407126
https://zq.zhaopin.com/moment/72407132
https://zq.zhaopin.com/moment/72407127
https://zq.zhaopin.com/moment/72407130
https://zq.zhaopin.com/moment/72407261
https://zq.zhaopin.com/moment/72407277
https://zq.zhaopin.com/moment/72407309
https://zq.zhaopin.com/moment/72407336
https://zq.zhaopin.com/moment/72407462
https://zq.zhaopin.com/moment/72407499
https://zq.zhaopin.com/moment/72407504
https://zq.zhaopin.com/moment/72407529
https://zq.zhaopin.com/moment/72407557
https://zq.zhaopin.com/moment/72407681
https://zq.zhaopin.com/moment/72407720
https://zq.zhaopin.com/moment/72407719
https://zq.zhaopin.com/moment/72407752
https://zq.zhaopin.com/moment/72407777
https://zq.zhaopin.com/moment/72407898
https://zq.zhaopin.com/moment/72407927
https://zq.zhaopin.com/moment/72407946
https://zq.zhaopin.com/moment/72407940
https://zq.zhaopin.com/moment/72408126
https://zq.zhaopin.com/moment/72408006
https://zq.zhaopin.com/moment/72408135
https://zq.zhaopin.com/moment/72408145
https://zq.zhaopin.com/moment/72408234
https://zq.zhaopin.com/moment/72408347
https://zq.zhaopin.com/moment/72408358
https://zq.zhaopin.com/moment/72408362
https://zq.zhaopin.com/moment/72408367
https://zq.zhaopin.com/moment/72408427
https://zq.zhaopin.com/moment/72408554
https://zq.zhaopin.com/moment/72408577
https://zq.zhaopin.com/moment/72408583
https://zq.zhaopin.com/moment/72408641
https://zq.zhaopin.com/moment/72408594
https://zq.zhaopin.com/moment/72408797
https://zq.zhaopin.com/moment/72408767
https://zq.zhaopin.com/moment/72408805
https://zq.zhaopin.com/moment/72408806
https://zq.zhaopin.com/moment/72408841
https://zq.zhaopin.com/moment/72408974
https://zq.zhaopin.com/moment/72409002
https://zq.zhaopin.com/moment/72409021
https://zq.zhaopin.com/moment/72409024
https://zq.zhaopin.com/moment/72409065
https://zq.zhaopin.com/moment/72409204
https://zq.zhaopin.com/moment/72409243
https://zq.zhaopin.com/moment/72409232
https://zq.zhaopin.com/moment/72409267
https://zq.zhaopin.com/moment/72409240
https://zq.zhaopin.com/moment/72409306
https://zq.zhaopin.com/moment/72409309
https://zq.zhaopin.com/moment/72409305
https://zq.zhaopin.com/moment/72409308
https://zq.zhaopin.com/moment/72409307
https://zq.zhaopin.com/moment/72409315
https://zq.zhaopin.com/moment/72409316
https://zq.zhaopin.com/moment/72409317
https://zq.zhaopin.com/moment/72409319
https://zq.zhaopin.com/moment/72409320
https://zq.zhaopin.com/moment/72409328
https://zq.zhaopin.com/moment/72409327
https://zq.zhaopin.com/moment/72409329
https://zq.zhaopin.com/moment/72409330
https://zq.zhaopin.com/moment/72409337
https://zq.zhaopin.com/moment/72409331
https://zq.zhaopin.com/moment/72409338
https://zq.zhaopin.com/moment/72409339
https://zq.zhaopin.com/moment/72409344
https://zq.zhaopin.com/moment/72409343
https://zq.zhaopin.com/moment/72409814
https://zq.zhaopin.com/moment/72409819
https://zq.zhaopin.com/moment/72409792
https://zq.zhaopin.com/moment/72409833
https://zq.zhaopin.com/moment/72409824
https://zq.zhaopin.com/moment/72410022
https://zq.zhaopin.com/moment/72410058
https://zq.zhaopin.com/moment/72410034
https://zq.zhaopin.com/moment/72410048
https://zq.zhaopin.com/moment/72410232
https://zq.zhaopin.com/moment/72410249
https://zq.zhaopin.com/moment/72410254
https://zq.zhaopin.com/moment/72410290
https://zq.zhaopin.com/moment/72410465
https://zq.zhaopin.com/moment/72410471
https://zq.zhaopin.com/moment/72410446
https://zq.zhaopin.com/moment/72410518
https://zq.zhaopin.com/moment/72410493
https://zq.zhaopin.com/moment/72410661
https://zq.zhaopin.com/moment/72410695
https://zq.zhaopin.com/moment/72410692
https://zq.zhaopin.com/moment/72410728
https://zq.zhaopin.com/moment/72410752
https://zq.zhaopin.com/moment/72410887
https://zq.zhaopin.com/moment/72410919
https://zq.zhaopin.com/moment/72410915
https://zq.zhaopin.com/moment/72410944
https://zq.zhaopin.com/moment/72410965
https://zq.zhaopin.com/moment/72411104
https://zq.zhaopin.com/moment/72411111
https://zq.zhaopin.com/moment/72411112
https://zq.zhaopin.com/moment/72411113
https://zq.zhaopin.com/moment/72411125
https://zq.zhaopin.com/moment/72411116
https://zq.zhaopin.com/moment/72411124
https://zq.zhaopin.com/moment/72411128
https://zq.zhaopin.com/moment/72411129
https://zq.zhaopin.com/moment/72411127
https://zq.zhaopin.com/moment/72411134
https://zq.zhaopin.com/moment/72411136
https://zq.zhaopin.com/moment/72411138
https://zq.zhaopin.com/moment/72411140
https://zq.zhaopin.com/moment/72411139
https://zq.zhaopin.com/moment/72411145
https://zq.zhaopin.com/moment/72411148
https://zq.zhaopin.com/moment/72411147
https://zq.zhaopin.com/moment/72411149
https://zq.zhaopin.com/moment/72411152
https://zq.zhaopin.com/moment/72411156
https://zq.zhaopin.com/moment/72411158
https://zq.zhaopin.com/moment/72411162
https://zq.zhaopin.com/moment/72411160
https://zq.zhaopin.com/moment/72411163
https://zq.zhaopin.com/moment/72411172
https://zq.zhaopin.com/moment/72411166
https://zq.zhaopin.com/moment/72411169
https://zq.zhaopin.com/moment/72411174
https://zq.zhaopin.com/moment/72411178
https://zq.zhaopin.com/moment/72411181
https://zq.zhaopin.com/moment/72411184
https://zq.zhaopin.com/moment/72411187
https://zq.zhaopin.com/moment/72411190
https://zq.zhaopin.com/moment/72411189
https://zq.zhaopin.com/moment/72411193
https://zq.zhaopin.com/moment/72411195
https://zq.zhaopin.com/moment/72411198
https://zq.zhaopin.com/moment/72411201
https://zq.zhaopin.com/moment/72411199
https://zq.zhaopin.com/moment/72411203
https://zq.zhaopin.com/moment/72411205
https://zq.zhaopin.com/moment/72411209
https://zq.zhaopin.com/moment/72411210
https://zq.zhaopin.com/moment/72411214
https://zq.zhaopin.com/moment/72411217
https://zq.zhaopin.com/moment/72411224
https://zq.zhaopin.com/moment/72411219
https://zq.zhaopin.com/moment/72411223
https://zq.zhaopin.com/moment/72411228
https://zq.zhaopin.com/moment/72411233
https://zq.zhaopin.com/moment/72411237
https://zq.zhaopin.com/moment/72411236
https://zq.zhaopin.com/moment/72411240
https://zq.zhaopin.com/moment/72411238
https://zq.zhaopin.com/moment/72411241
https://zq.zhaopin.com/moment/72411246
https://zq.zhaopin.com/moment/72411248
https://zq.zhaopin.com/moment/72411250
https://zq.zhaopin.com/moment/72411252
https://zq.zhaopin.com/moment/72411257
https://zq.zhaopin.com/moment/72411253
https://zq.zhaopin.com/moment/72411259
https://zq.zhaopin.com/moment/72411261
https://zq.zhaopin.com/moment/72411263
https://zq.zhaopin.com/moment/72411269
https://zq.zhaopin.com/moment/72411264
https://zq.zhaopin.com/moment/72411277
https://zq.zhaopin.com/moment/72411278
https://zq.zhaopin.com/moment/72411279
https://zq.zhaopin.com/moment/72411288
https://zq.zhaopin.com/moment/72411282
https://zq.zhaopin.com/moment/72411289
https://zq.zhaopin.com/moment/72411290
https://zq.zhaopin.com/moment/72411292
https://zq.zhaopin.com/moment/72411299
https://zq.zhaopin.com/moment/72411300
https://zq.zhaopin.com/moment/72411301
https://zq.zhaopin.com/moment/72411303
https://zq.zhaopin.com/moment/72411304
https://zq.zhaopin.com/moment/72411306
https://zq.zhaopin.com/moment/72411307
https://zq.zhaopin.com/moment/72411308
https://zq.zhaopin.com/moment/72411310
https://zq.zhaopin.com/moment/72411309
https://zq.zhaopin.com/moment/72411312
https://zq.zhaopin.com/moment/72411314
https://zq.zhaopin.com/moment/72411313
https://zq.zhaopin.com/moment/72411315
https://zq.zhaopin.com/moment/72411316
https://zq.zhaopin.com/moment/72411324
https://zq.zhaopin.com/moment/72411321
https://zq.zhaopin.com/moment/72411319
https://zq.zhaopin.com/moment/72411322
https://zq.zhaopin.com/moment/72411326
https://zq.zhaopin.com/moment/72411327
https://zq.zhaopin.com/moment/72411329
https://zq.zhaopin.com/moment/72411330
https://zq.zhaopin.com/moment/72411335
https://zq.zhaopin.com/moment/72411336
https://zq.zhaopin.com/moment/72411338
https://zq.zhaopin.com/moment/72411339
https://zq.zhaopin.com/moment/72411337
https://zq.zhaopin.com/moment/72411342
https://zq.zhaopin.com/moment/72411344
https://zq.zhaopin.com/moment/72411343
https://zq.zhaopin.com/moment/72411346
https://zq.zhaopin.com/moment/72411348
https://zq.zhaopin.com/moment/72411349
https://zq.zhaopin.com/moment/72411350
https://zq.zhaopin.com/moment/72411352
https://zq.zhaopin.com/moment/72411351
https://zq.zhaopin.com/moment/72411357
https://zq.zhaopin.com/moment/72411356
https://zq.zhaopin.com/moment/72411362
https://zq.zhaopin.com/moment/72411361
https://zq.zhaopin.com/moment/72411359
https://zq.zhaopin.com/moment/72411364
https://zq.zhaopin.com/moment/72411366
https://zq.zhaopin.com/moment/72411369
https://zq.zhaopin.com/moment/72411370
https://zq.zhaopin.com/moment/72411371
https://zq.zhaopin.com/moment/72411372
https://zq.zhaopin.com/moment/72411373
https://zq.zhaopin.com/moment/72411377
https://zq.zhaopin.com/moment/72411374
https://zq.zhaopin.com/moment/72411379
https://zq.zhaopin.com/moment/72411378
https://zq.zhaopin.com/moment/72411381
https://zq.zhaopin.com/moment/72411380
https://zq.zhaopin.com/moment/72411383
https://zq.zhaopin.com/moment/72411385
https://zq.zhaopin.com/moment/72411392
https://zq.zhaopin.com/moment/72411384
https://zq.zhaopin.com/moment/72411387
https://zq.zhaopin.com/moment/72411388
https://zq.zhaopin.com/moment/72411394
https://zq.zhaopin.com/moment/72411395
https://zq.zhaopin.com/moment/72411396
https://zq.zhaopin.com/moment/72411400
https://zq.zhaopin.com/moment/72411397
https://zq.zhaopin.com/moment/72411398
https://zq.zhaopin.com/moment/72411403
https://zq.zhaopin.com/moment/72411402
https://zq.zhaopin.com/moment/72411404
https://zq.zhaopin.com/moment/72411407
https://zq.zhaopin.com/moment/72411408
https://zq.zhaopin.com/moment/72411409
https://zq.zhaopin.com/moment/72411410
https://zq.zhaopin.com/moment/72411412
https://zq.zhaopin.com/moment/72411413
https://zq.zhaopin.com/moment/72411415
https://zq.zhaopin.com/moment/72411416
https://zq.zhaopin.com/moment/72411421
https://zq.zhaopin.com/moment/72411422
https://zq.zhaopin.com/moment/72411423
https://zq.zhaopin.com/moment/72411425
https://zq.zhaopin.com/moment/72411424
https://zq.zhaopin.com/moment/72411426
https://zq.zhaopin.com/moment/72411431
https://zq.zhaopin.com/moment/72411429
https://zq.zhaopin.com/moment/72411428
https://zq.zhaopin.com/moment/72411434
https://zq.zhaopin.com/moment/72411435
https://zq.zhaopin.com/moment/72411432
https://zq.zhaopin.com/moment/72411436
https://zq.zhaopin.com/moment/72411438
https://zq.zhaopin.com/moment/72411437
https://zq.zhaopin.com/moment/72411441
https://zq.zhaopin.com/moment/72411443
https://zq.zhaopin.com/moment/72411444
https://zq.zhaopin.com/moment/72411450
https://zq.zhaopin.com/moment/72411445
https://zq.zhaopin.com/moment/72411446
https://zq.zhaopin.com/moment/72411449
https://zq.zhaopin.com/moment/72411452
https://zq.zhaopin.com/moment/72411454
https://zq.zhaopin.com/moment/72411456
https://zq.zhaopin.com/moment/72411457
https://zq.zhaopin.com/moment/72411459
https://zq.zhaopin.com/moment/72411458
https://zq.zhaopin.com/moment/72411462
https://zq.zhaopin.com/moment/72411460
https://zq.zhaopin.com/moment/72411463
https://zq.zhaopin.com/moment/72411464
https://zq.zhaopin.com/moment/72411467
https://zq.zhaopin.com/moment/72411471
https://zq.zhaopin.com/moment/72411469
https://zq.zhaopin.com/moment/72411470
https://zq.zhaopin.com/moment/72411472
https://zq.zhaopin.com/moment/72411477
https://zq.zhaopin.com/moment/72411473
https://zq.zhaopin.com/moment/72411474
https://zq.zhaopin.com/moment/72411476
https://zq.zhaopin.com/moment/72411479
https://zq.zhaopin.com/moment/72411478
https://zq.zhaopin.com/moment/72411480
https://zq.zhaopin.com/moment/72411484
https://zq.zhaopin.com/moment/72411486
https://zq.zhaopin.com/moment/72411487
https://zq.zhaopin.com/moment/72411488
https://zq.zhaopin.com/moment/72411489
https://zq.zhaopin.com/moment/72411491
https://zq.zhaopin.com/moment/72411492
https://zq.zhaopin.com/moment/72411494
https://zq.zhaopin.com/moment/72411495
https://zq.zhaopin.com/moment/72411497
https://zq.zhaopin.com/moment/72411498
https://zq.zhaopin.com/moment/72411499
https://zq.zhaopin.com/moment/72411500
https://zq.zhaopin.com/moment/72411501
https://zq.zhaopin.com/moment/72411503
https://zq.zhaopin.com/moment/72411507
https://zq.zhaopin.com/moment/72411504
https://zq.zhaopin.com/moment/72411506
https://zq.zhaopin.com/moment/72411508
https://zq.zhaopin.com/moment/72411510
https://zq.zhaopin.com/moment/72411511
https://zq.zhaopin.com/moment/72411513
https://zq.zhaopin.com/moment/72411512
https://zq.zhaopin.com/moment/72411518
https://zq.zhaopin.com/moment/72411514
https://zq.zhaopin.com/moment/72411522
https://zq.zhaopin.com/moment/72411523
https://zq.zhaopin.com/moment/72411531
https://zq.zhaopin.com/moment/72411524
https://zq.zhaopin.com/moment/72411525
https://zq.zhaopin.com/moment/72411532
https://zq.zhaopin.com/moment/72411533
https://zq.zhaopin.com/moment/72411534
https://zq.zhaopin.com/moment/72411535
https://zq.zhaopin.com/moment/72411542
https://zq.zhaopin.com/moment/72411544
https://zq.zhaopin.com/moment/72411553
https://zq.zhaopin.com/moment/72411545
https://zq.zhaopin.com/moment/72411543
https://zq.zhaopin.com/moment/72411546
https://zq.zhaopin.com/moment/72411554
https://zq.zhaopin.com/moment/72411555
https://zq.zhaopin.com/moment/72411556
https://zq.zhaopin.com/moment/72411557
https://zq.zhaopin.com/moment/72411568
https://zq.zhaopin.com/moment/72411566
https://zq.zhaopin.com/moment/72411567
https://zq.zhaopin.com/moment/72411575
https://zq.zhaopin.com/moment/72411579
https://zq.zhaopin.com/moment/72411577
https://zq.zhaopin.com/moment/72411576
https://zq.zhaopin.com/moment/72411578
https://zq.zhaopin.com/moment/72411591
https://zq.zhaopin.com/moment/72411590
https://zq.zhaopin.com/moment/72411592
https://zq.zhaopin.com/moment/72411594
https://zq.zhaopin.com/moment/72411595
https://zq.zhaopin.com/moment/72411624
https://zq.zhaopin.com/moment/72411630
https://zq.zhaopin.com/moment/72411631
https://zq.zhaopin.com/moment/72411680
https://zq.zhaopin.com/moment/72411807
https://zq.zhaopin.com/moment/72411808
https://zq.zhaopin.com/moment/72411811
https://zq.zhaopin.com/moment/72411812
https://zq.zhaopin.com/moment/72411813
https://zq.zhaopin.com/moment/72411821
https://zq.zhaopin.com/moment/72411823
https://zq.zhaopin.com/moment/72411824
https://zq.zhaopin.com/moment/72411825
https://zq.zhaopin.com/moment/72411826
https://zq.zhaopin.com/moment/72411835
https://zq.zhaopin.com/moment/72411837
https://zq.zhaopin.com/moment/72411838
https://zq.zhaopin.com/moment/72411839
https://zq.zhaopin.com/moment/72411840
https://zq.zhaopin.com/moment/72411851
https://zq.zhaopin.com/moment/72411850
https://zq.zhaopin.com/moment/72411853
https://zq.zhaopin.com/moment/72411856
https://zq.zhaopin.com/moment/72411854
https://zq.zhaopin.com/moment/72411863
https://zq.zhaopin.com/moment/72411866
https://zq.zhaopin.com/moment/72411864
https://zq.zhaopin.com/moment/72411869
https://zq.zhaopin.com/moment/72411873
https://zq.zhaopin.com/moment/72411877
https://zq.zhaopin.com/moment/72411879
https://zq.zhaopin.com/moment/72411880
https://zq.zhaopin.com/moment/72411887
https://zq.zhaopin.com/moment/72411881
https://zq.zhaopin.com/moment/72411888
https://zq.zhaopin.com/moment/72411891
https://zq.zhaopin.com/moment/72411892
https://zq.zhaopin.com/moment/72411898
https://zq.zhaopin.com/moment/72411894
https://zq.zhaopin.com/moment/72411900
https://zq.zhaopin.com/moment/72411902
https://zq.zhaopin.com/moment/72411905
https://zq.zhaopin.com/moment/72411906
https://zq.zhaopin.com/moment/72411912
https://zq.zhaopin.com/moment/72411914
https://zq.zhaopin.com/moment/72411919
https://zq.zhaopin.com/moment/72411921
https://zq.zhaopin.com/moment/72411920
https://zq.zhaopin.com/moment/72411929
https://zq.zhaopin.com/moment/72411926
https://zq.zhaopin.com/moment/72411932
https://zq.zhaopin.com/moment/72411934
https://zq.zhaopin.com/moment/72411935
https://zq.zhaopin.com/moment/72411952
https://zq.zhaopin.com/moment/72411940
https://zq.zhaopin.com/moment/72411966
https://zq.zhaopin.com/moment/72411988
https://zq.zhaopin.com/moment/72412003
https://zq.zhaopin.com/moment/72412123
https://zq.zhaopin.com/moment/72412157
https://zq.zhaopin.com/moment/72412174
https://zq.zhaopin.com/moment/72412233
https://zq.zhaopin.com/moment/72412369
https://zq.zhaopin.com/moment/72412394
https://zq.zhaopin.com/moment/72412445
https://zq.zhaopin.com/moment/72412461
https://zq.zhaopin.com/moment/72412587
https://zq.zhaopin.com/moment/72412593
https://zq.zhaopin.com/moment/72412673
https://zq.zhaopin.com/moment/72412623
https://zq.zhaopin.com/moment/72412675
https://zq.zhaopin.com/moment/72412824
https://zq.zhaopin.com/moment/72412884
https://zq.zhaopin.com/moment/72412845
https://zq.zhaopin.com/moment/72413044
https://zq.zhaopin.com/moment/72412896
https://zq.zhaopin.com/moment/72413043
https://zq.zhaopin.com/moment/72413058
https://zq.zhaopin.com/moment/72413095
https://zq.zhaopin.com/moment/72413252
https://zq.zhaopin.com/moment/72413227
https://zq.zhaopin.com/moment/72413267
https://zq.zhaopin.com/moment/72413301
https://zq.zhaopin.com/moment/72413306
https://zq.zhaopin.com/moment/72413523
https://zq.zhaopin.com/moment/72413441
https://zq.zhaopin.com/moment/72413463
https://zq.zhaopin.com/moment/72413522
https://zq.zhaopin.com/moment/72413647
https://zq.zhaopin.com/moment/72413657
https://zq.zhaopin.com/moment/72413670
https://zq.zhaopin.com/moment/72413737
https://zq.zhaopin.com/moment/72413854
https://zq.zhaopin.com/moment/72413749
https://zq.zhaopin.com/moment/72413877
https://zq.zhaopin.com/moment/72413862
https://zq.zhaopin.com/moment/72414054
https://zq.zhaopin.com/moment/72413925
https://zq.zhaopin.com/moment/72413937
https://zq.zhaopin.com/moment/72414060
https://zq.zhaopin.com/moment/72414078
https://zq.zhaopin.com/moment/72414126
https://zq.zhaopin.com/moment/72414150
https://zq.zhaopin.com/moment/72414261
https://zq.zhaopin.com/moment/72414278
https://zq.zhaopin.com/moment/72414256
https://zq.zhaopin.com/moment/72414348
https://zq.zhaopin.com/moment/72414363
https://zq.zhaopin.com/moment/72414478
https://zq.zhaopin.com/moment/72414491
https://zq.zhaopin.com/moment/72414483
https://zq.zhaopin.com/moment/72414533
https://zq.zhaopin.com/moment/72414567
https://zq.zhaopin.com/moment/72414698
https://zq.zhaopin.com/moment/72414701
https://zq.zhaopin.com/moment/72414722
https://zq.zhaopin.com/moment/72414771
https://zq.zhaopin.com/moment/72414753
https://zq.zhaopin.com/moment/72414903
https://zq.zhaopin.com/moment/72414905
https://zq.zhaopin.com/moment/72414913
https://zq.zhaopin.com/moment/72414958
https://zq.zhaopin.com/moment/72414992
https://zq.zhaopin.com/moment/72415099
https://zq.zhaopin.com/moment/72415111
https://zq.zhaopin.com/moment/72415164
https://zq.zhaopin.com/moment/72415125
https://zq.zhaopin.com/moment/72415200
https://zq.zhaopin.com/moment/72415302
https://zq.zhaopin.com/moment/72415335
https://zq.zhaopin.com/moment/72415341
https://zq.zhaopin.com/moment/72415399
https://zq.zhaopin.com/moment/72415390
https://zq.zhaopin.com/moment/72415516
https://zq.zhaopin.com/moment/72415540
https://zq.zhaopin.com/moment/72415603
https://zq.zhaopin.com/moment/72415590
https://zq.zhaopin.com/moment/72415766
https://zq.zhaopin.com/moment/72415733
https://zq.zhaopin.com/moment/72415817
https://zq.zhaopin.com/moment/72415765
https://zq.zhaopin.com/moment/72415934
https://zq.zhaopin.com/moment/72415824
https://zq.zhaopin.com/moment/72415975
https://zq.zhaopin.com/moment/72415974
https://zq.zhaopin.com/moment/72416039
https://zq.zhaopin.com/moment/72416165
https://zq.zhaopin.com/moment/72416194
https://zq.zhaopin.com/moment/72416202
https://zq.zhaopin.com/moment/72416267
https://zq.zhaopin.com/moment/72416266
https://zq.zhaopin.com/moment/72416380
https://zq.zhaopin.com/moment/72416471
https://zq.zhaopin.com/moment/72416633
https://zq.zhaopin.com/moment/72416476
https://zq.zhaopin.com/moment/72416419
https://zq.zhaopin.com/moment/72416433
https://zq.zhaopin.com/moment/72416602
https://zq.zhaopin.com/moment/72416667
https://zq.zhaopin.com/moment/72416695
https://zq.zhaopin.com/moment/72416711
https://zq.zhaopin.com/moment/72416835
https://zq.zhaopin.com/moment/72416857
https://zq.zhaopin.com/moment/72416880
https://zq.zhaopin.com/moment/72417064
https://zq.zhaopin.com/moment/72416917
https://zq.zhaopin.com/moment/72416934
https://zq.zhaopin.com/moment/72417087
https://zq.zhaopin.com/moment/72417093
https://zq.zhaopin.com/moment/72417122
https://zq.zhaopin.com/moment/72417147
https://zq.zhaopin.com/moment/72417309
https://zq.zhaopin.com/moment/72417316
https://zq.zhaopin.com/moment/72417506
https://zq.zhaopin.com/moment/72417371
https://zq.zhaopin.com/moment/72417350
https://zq.zhaopin.com/moment/72417528
https://zq.zhaopin.com/moment/72417536
https://zq.zhaopin.com/moment/72417557
https://zq.zhaopin.com/moment/72417616
https://zq.zhaopin.com/moment/72417728
https://zq.zhaopin.com/moment/72417757
https://zq.zhaopin.com/moment/72417752
https://zq.zhaopin.com/moment/72417791
https://zq.zhaopin.com/moment/72417818
https://zq.zhaopin.com/moment/72417942
https://zq.zhaopin.com/moment/72417972
https://zq.zhaopin.com/moment/72417969
https://zq.zhaopin.com/moment/72418010
https://zq.zhaopin.com/moment/72418669
https://zq.zhaopin.com/moment/72418051
https://zq.zhaopin.com/moment/72418665
https://zq.zhaopin.com/moment/72418670
https://zq.zhaopin.com/moment/72418681
https://zq.zhaopin.com/moment/72418720
https://zq.zhaopin.com/moment/72418884
https://zq.zhaopin.com/moment/72418892
https://zq.zhaopin.com/moment/72418907
https://zq.zhaopin.com/moment/72418947
https://zq.zhaopin.com/moment/72419114
https://zq.zhaopin.com/moment/72419135
https://zq.zhaopin.com/moment/72419126
https://zq.zhaopin.com/moment/72419155
https://zq.zhaopin.com/moment/72419170
https://zq.zhaopin.com/moment/72419337
https://zq.zhaopin.com/moment/72419373
https://zq.zhaopin.com/moment/72419360
https://zq.zhaopin.com/moment/72419389
https://zq.zhaopin.com/moment/72419571
https://zq.zhaopin.com/moment/72419579
https://zq.zhaopin.com/moment/72419583
https://zq.zhaopin.com/moment/72419590
https://zq.zhaopin.com/moment/72419612
https://zq.zhaopin.com/moment/72419806
https://zq.zhaopin.com/moment/72419798
https://zq.zhaopin.com/moment/72419805
https://zq.zhaopin.com/moment/72419829
https://zq.zhaopin.com/moment/72419815
https://zq.zhaopin.com/moment/72420006
https://zq.zhaopin.com/moment/72420027
https://zq.zhaopin.com/moment/72420042
https://zq.zhaopin.com/moment/72420049
https://zq.zhaopin.com/moment/72420070
https://zq.zhaopin.com/moment/72420213
https://zq.zhaopin.com/moment/72420264
https://zq.zhaopin.com/moment/72420247
https://zq.zhaopin.com/moment/72420269
https://zq.zhaopin.com/moment/72420281
https://zq.zhaopin.com/moment/72420441
https://zq.zhaopin.com/moment/72420469
https://zq.zhaopin.com/moment/72420460
https://zq.zhaopin.com/moment/72420479
https://zq.zhaopin.com/moment/72420494
https://zq.zhaopin.com/moment/72420656
https://zq.zhaopin.com/moment/72420673
https://zq.zhaopin.com/moment/72420694
https://zq.zhaopin.com/moment/72420683
https://zq.zhaopin.com/moment/72420726
https://zq.zhaopin.com/moment/72420859
https://zq.zhaopin.com/moment/72420888
https://zq.zhaopin.com/moment/72420898
https://zq.zhaopin.com/moment/72420914
https://zq.zhaopin.com/moment/72420944
https://zq.zhaopin.com/moment/72421097
https://zq.zhaopin.com/moment/72421099
https://zq.zhaopin.com/moment/72421173
https://zq.zhaopin.com/moment/72421125
https://zq.zhaopin.com/moment/72421110
https://zq.zhaopin.com/moment/72421300
https://zq.zhaopin.com/moment/72421309
https://zq.zhaopin.com/moment/72421346
https://zq.zhaopin.com/moment/72421334
https://zq.zhaopin.com/moment/72421374
https://zq.zhaopin.com/moment/72421518
https://zq.zhaopin.com/moment/72421544
https://zq.zhaopin.com/moment/72421527
https://zq.zhaopin.com/moment/72421581
https://zq.zhaopin.com/moment/72421631
https://zq.zhaopin.com/moment/72421632
https://zq.zhaopin.com/moment/72421633
https://zq.zhaopin.com/moment/72421635
https://zq.zhaopin.com/moment/72421636
https://zq.zhaopin.com/moment/72421642
https://zq.zhaopin.com/moment/72421645
https://zq.zhaopin.com/moment/72421647
https://zq.zhaopin.com/moment/72421648
https://zq.zhaopin.com/moment/72421654
https://zq.zhaopin.com/moment/72421655
https://zq.zhaopin.com/moment/72421657
https://zq.zhaopin.com/moment/72421660
https://zq.zhaopin.com/moment/72421667
https://zq.zhaopin.com/moment/72421668
https://zq.zhaopin.com/moment/72421672
https://zq.zhaopin.com/moment/72421670
https://zq.zhaopin.com/moment/72421673
https://zq.zhaopin.com/moment/72421682
https://zq.zhaopin.com/moment/72421681
https://zq.zhaopin.com/moment/72421685
https://zq.zhaopin.com/moment/72421686
https://zq.zhaopin.com/moment/72421683
https://zq.zhaopin.com/moment/72421692
https://zq.zhaopin.com/moment/72421691
https://zq.zhaopin.com/moment/72421693
https://zq.zhaopin.com/moment/72421695
https://zq.zhaopin.com/moment/72421696
https://zq.zhaopin.com/moment/72421701
https://zq.zhaopin.com/moment/72421702
https://zq.zhaopin.com/moment/72421703
https://zq.zhaopin.com/moment/72421706
https://zq.zhaopin.com/moment/72421711
https://zq.zhaopin.com/moment/72421713
https://zq.zhaopin.com/moment/72421712
https://zq.zhaopin.com/moment/72421716
https://zq.zhaopin.com/moment/72421727
https://zq.zhaopin.com/moment/72421717
https://zq.zhaopin.com/moment/72421724
https://zq.zhaopin.com/moment/72421726
https://zq.zhaopin.com/moment/72421730
https://zq.zhaopin.com/moment/72421732
https://zq.zhaopin.com/moment/72421740
https://zq.zhaopin.com/moment/72421744
https://zq.zhaopin.com/moment/72421741
https://zq.zhaopin.com/moment/72421742
https://zq.zhaopin.com/moment/72421745
https://zq.zhaopin.com/moment/72421751
https://zq.zhaopin.com/moment/72421753
https://zq.zhaopin.com/moment/72421750
https://zq.zhaopin.com/moment/72421756
https://zq.zhaopin.com/moment/72421755
https://zq.zhaopin.com/moment/72421761
https://zq.zhaopin.com/moment/72421765
https://zq.zhaopin.com/moment/72421763
https://zq.zhaopin.com/moment/72421766
https://zq.zhaopin.com/moment/72421771
https://zq.zhaopin.com/moment/72421773
https://zq.zhaopin.com/moment/72421772
https://zq.zhaopin.com/moment/72421774
https://zq.zhaopin.com/moment/72421776
https://zq.zhaopin.com/moment/72421784
https://zq.zhaopin.com/moment/72421785
https://zq.zhaopin.com/moment/72421786
https://zq.zhaopin.com/moment/72421790
https://zq.zhaopin.com/moment/72421787
https://zq.zhaopin.com/moment/72421795
https://zq.zhaopin.com/moment/72421798
https://zq.zhaopin.com/moment/72421796
https://zq.zhaopin.com/moment/72421801
https://zq.zhaopin.com/moment/72421808
https://zq.zhaopin.com/moment/72421810
https://zq.zhaopin.com/moment/72421809
https://zq.zhaopin.com/moment/72421814
https://zq.zhaopin.com/moment/72421812
https://zq.zhaopin.com/moment/72421821
https://zq.zhaopin.com/moment/72421822
https://zq.zhaopin.com/moment/72421823
https://zq.zhaopin.com/moment/72421824
https://zq.zhaopin.com/moment/72421826
https://zq.zhaopin.com/moment/72421831
https://zq.zhaopin.com/moment/72421832
https://zq.zhaopin.com/moment/72421833
https://zq.zhaopin.com/moment/72421834
https://zq.zhaopin.com/moment/72421836
https://zq.zhaopin.com/moment/72421843
https://zq.zhaopin.com/moment/72421844
https://zq.zhaopin.com/moment/72421845
https://zq.zhaopin.com/moment/72421847
https://zq.zhaopin.com/moment/72421851
https://zq.zhaopin.com/moment/72421849
https://zq.zhaopin.com/moment/72421850
https://zq.zhaopin.com/moment/72421852
https://zq.zhaopin.com/moment/72421889
https://zq.zhaopin.com/moment/72421853
https://zq.zhaopin.com/moment/72421896
https://zq.zhaopin.com/moment/72421910
https://zq.zhaopin.com/moment/72421898
https://zq.zhaopin.com/moment/72421930
https://zq.zhaopin.com/moment/72422024
https://zq.zhaopin.com/moment/72422042
https://zq.zhaopin.com/moment/72422037
https://zq.zhaopin.com/moment/72422061
https://zq.zhaopin.com/moment/72422087
https://zq.zhaopin.com/moment/72422217
https://zq.zhaopin.com/moment/72422221
https://zq.zhaopin.com/moment/72422256
https://zq.zhaopin.com/moment/72422219
https://zq.zhaopin.com/moment/72422422
https://zq.zhaopin.com/moment/72422287
https://zq.zhaopin.com/moment/72422443
https://zq.zhaopin.com/moment/72422437
https://zq.zhaopin.com/moment/72422459
https://zq.zhaopin.com/moment/72422515
https://zq.zhaopin.com/moment/72422636
https://zq.zhaopin.com/moment/72422652
https://zq.zhaopin.com/moment/72422649
https://zq.zhaopin.com/moment/72422712
https://zq.zhaopin.com/moment/72422664
https://zq.zhaopin.com/moment/72422842
https://zq.zhaopin.com/moment/72422886
https://zq.zhaopin.com/moment/72422880
https://zq.zhaopin.com/moment/72422887
https://zq.zhaopin.com/moment/72422945
https://zq.zhaopin.com/moment/72423069
https://zq.zhaopin.com/moment/72423108
https://zq.zhaopin.com/moment/72423100
https://zq.zhaopin.com/moment/72423117
https://zq.zhaopin.com/moment/72423283
https://zq.zhaopin.com/moment/72423171
https://zq.zhaopin.com/moment/72423322
https://zq.zhaopin.com/moment/72423337
https://zq.zhaopin.com/moment/72423394
https://zq.zhaopin.com/moment/72423333
https://zq.zhaopin.com/moment/72423507
https://zq.zhaopin.com/moment/72423548
https://zq.zhaopin.com/moment/72423569
https://zq.zhaopin.com/moment/72423555
https://zq.zhaopin.com/moment/72423632
https://zq.zhaopin.com/moment/72423722
https://zq.zhaopin.com/moment/72423771
https://zq.zhaopin.com/moment/72423775
https://zq.zhaopin.com/moment/72423829
https://zq.zhaopin.com/moment/72423944
https://zq.zhaopin.com/moment/72423993
https://zq.zhaopin.com/moment/72423998
https://zq.zhaopin.com/moment/72424016
https://zq.zhaopin.com/moment/72424237
https://zq.zhaopin.com/moment/72424180
https://zq.zhaopin.com/moment/72424243
https://zq.zhaopin.com/moment/72424236
https://zq.zhaopin.com/moment/72424293
https://zq.zhaopin.com/moment/72424409
https://zq.zhaopin.com/moment/72424444
https://zq.zhaopin.com/moment/72424470
https://zq.zhaopin.com/moment/72424457
https://zq.zhaopin.com/moment/72424627
https://zq.zhaopin.com/moment/72424517
https://zq.zhaopin.com/moment/72424685
https://zq.zhaopin.com/moment/72424693
https://zq.zhaopin.com/moment/72424695
https://zq.zhaopin.com/moment/72424744
https://zq.zhaopin.com/moment/72424892
https://zq.zhaopin.com/moment/72424847
https://zq.zhaopin.com/moment/72424891
https://zq.zhaopin.com/moment/72424963
https://zq.zhaopin.com/moment/72424897
https://zq.zhaopin.com/moment/72425145
https://zq.zhaopin.com/moment/72425149
https://zq.zhaopin.com/moment/72425148
https://zq.zhaopin.com/moment/72425207
https://zq.zhaopin.com/moment/72425335
https://zq.zhaopin.com/moment/72425398
https://zq.zhaopin.com/moment/72425399
https://zq.zhaopin.com/moment/72425400
https://zq.zhaopin.com/moment/72425463
https://zq.zhaopin.com/moment/72425647
https://zq.zhaopin.com/moment/72425589
https://zq.zhaopin.com/moment/72425649
https://zq.zhaopin.com/moment/72425663
https://zq.zhaopin.com/moment/72425833
https://zq.zhaopin.com/moment/72425711
https://zq.zhaopin.com/moment/72425884
https://zq.zhaopin.com/moment/72425886
https://zq.zhaopin.com/moment/72425902
https://zq.zhaopin.com/moment/72426111
https://zq.zhaopin.com/moment/72426058
https://zq.zhaopin.com/moment/72425948
https://zq.zhaopin.com/moment/72426115
https://zq.zhaopin.com/moment/72426153
https://zq.zhaopin.com/moment/72426177
https://zq.zhaopin.com/moment/72426315
https://zq.zhaopin.com/moment/72426377
https://zq.zhaopin.com/moment/72426373
https://zq.zhaopin.com/moment/72426394
https://zq.zhaopin.com/moment/72426451
https://zq.zhaopin.com/moment/72426560
https://zq.zhaopin.com/moment/72426628
https://zq.zhaopin.com/moment/72426707
https://zq.zhaopin.com/moment/72426633
https://zq.zhaopin.com/moment/72426636
https://zq.zhaopin.com/moment/72426867
https://zq.zhaopin.com/moment/72426801
https://zq.zhaopin.com/moment/72426883
https://zq.zhaopin.com/moment/72426891
https://zq.zhaopin.com/moment/72426969
https://zq.zhaopin.com/moment/72427056
https://zq.zhaopin.com/moment/72427118
https://zq.zhaopin.com/moment/72427119
https://zq.zhaopin.com/moment/72427134
https://zq.zhaopin.com/moment/72427220
https://zq.zhaopin.com/moment/72427321
https://zq.zhaopin.com/moment/72427413
https://zq.zhaopin.com/moment/72427410
https://zq.zhaopin.com/moment/72427502
https://zq.zhaopin.com/moment/72427612
https://zq.zhaopin.com/moment/72427688
https://zq.zhaopin.com/moment/72427693
https://zq.zhaopin.com/moment/72427691
https://zq.zhaopin.com/moment/72427788
https://zq.zhaopin.com/moment/72427897
https://zq.zhaopin.com/moment/72427982
https://zq.zhaopin.com/moment/72427989
https://zq.zhaopin.com/moment/72427995
https://zq.zhaopin.com/moment/72428078
https://zq.zhaopin.com/moment/72428184
https://zq.zhaopin.com/moment/72428296
https://zq.zhaopin.com/moment/72428290
https://zq.zhaopin.com/moment/72428298
https://zq.zhaopin.com/moment/72428364
https://zq.zhaopin.com/moment/72428582
https://zq.zhaopin.com/moment/72428660
https://zq.zhaopin.com/moment/72428602
https://zq.zhaopin.com/moment/72428596
https://zq.zhaopin.com/moment/72428849
https://zq.zhaopin.com/moment/72428888
https://zq.zhaopin.com/moment/72428860
https://zq.zhaopin.com/moment/72428949
https://zq.zhaopin.com/moment/72429153
https://zq.zhaopin.com/moment/72429190
https://zq.zhaopin.com/moment/72429241
https://zq.zhaopin.com/moment/72429175
https://zq.zhaopin.com/moment/72429379
https://zq.zhaopin.com/moment/72429442
https://zq.zhaopin.com/moment/72429456
https://zq.zhaopin.com/moment/72429528
https://zq.zhaopin.com/moment/72429457
https://zq.zhaopin.com/moment/72429666
https://zq.zhaopin.com/moment/72429752
https://zq.zhaopin.com/moment/72429722
https://zq.zhaopin.com/moment/72429771
https://zq.zhaopin.com/moment/72429832
https://zq.zhaopin.com/moment/72430008
https://zq.zhaopin.com/moment/72429953
https://zq.zhaopin.com/moment/72430035
https://zq.zhaopin.com/moment/72430044
https://zq.zhaopin.com/moment/72430107
https://zq.zhaopin.com/moment/72430277
https://zq.zhaopin.com/moment/72430193
https://zq.zhaopin.com/moment/72430301
https://zq.zhaopin.com/moment/72430310
https://zq.zhaopin.com/moment/72430521
https://zq.zhaopin.com/moment/72430545
https://zq.zhaopin.com/moment/72430561