LightRAG 实战: 基于 Ollama 搭建带知识图谱的可控 RAG 系统

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


请使用浏览器的分享功能分享到微信等